Java使用Maven进行Jar打包中遇到的一些问题总结

时间:16-12-09 栏目:Java开发 作者:kyle 评论:0 点击: 3,031 次

 

最近研究了2天的Maven打包,真是受够了,Java打包太强大,造成了太麻烦的打包问题。

 

代码里面使用了TestNG做并发测试,但是打包之后就运行不了,也不知道是什么原因造成的。最后解决了,总结了一些经验写下来。

 

 

1、log4j的日志配置文件log4j.properties,在打包时,不要打包进资源文件里面,否则程序貌似会优化读取。

导致我手工生成的一份配置文件不管怎么修改都不会生效,靠。

log4j.properties存放在项目src/main/resources里面,打包时Maven 的pom.xml Build节点开启了:

<resources>
         <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
             <excludes>
                 <!-- <exclude>**/*.xml</exclude> <exclude>**/*.properties</exclude> -->
             </excludes>
         </resource>
     </resources>

 

导致打包到resources里面了,然后又使用了maven –assembly -plugin进行打包,输出了一份到程序目录下面,造成了这个问题。

注释掉这几行,即可使用打包好的jar下面的log4j.properties配置文件。不得不说Java确实比C#和PHP的包完善,使用起来也是绝顶方便。

 

2、在TestNG写的实例,想要打包好之后,能运行,需要几步操作

首先需要开启maven-jar-plugin插件,添加上:

<executions>
    <execution>
        <goals>
            <goal>test-jar</goal>
        </goals>
    </execution>
</executions>

 

这样才会生成test包。因为Jar主程序包和test包是分开的。没学过Java搞这些真是一步一个坑。

 

第二步是生成的test包和主包,放一起。我的程序是testSe-2.0.jar和testSe-2.0-tests.jar 2个包。

 

然后想运行tests里面的内容时,遇到了问题,解决了一天才解决掉。

 

TestNG写出来的实例,有几种方式可以运行。

 

一种是命令行运行,一种用Idea去运行,一种用Ant去执行,这种貌似用的比较多。

 

但是Jar包是发给别人用的,用Ant的话,需要环境,而且也需要写复杂的配置。

 

最后只能放到命令行运行,一直报各种错。。。。。

 

直接说解决方案了。我的目录结构是jar包,lib目录放了编译的jar包。

 

在使用时,需要严格按下面的语法:看我写的装逼Shell脚本,保存为run.sh,用SH去执行的,当时认为是配置造成的,所以写了复杂的Sh脚本。

 

#!/usr/bin/env bash

CUR_PATH=`pwd`
export CLASS_PATH=$CLASS_PATH:$CUR_PATH/lib/

echo "Current Path is: $CUR_PATH"

echo $CLASS_PATH

java -cp "$CLASS_PATH:lib/testng-6.10.jar:testSel-2.0.jar:testSel-2.0-tests.jar:lib/*.jar" org.testng.TestNG $CUR_PATH/testng.xml

# java -cp "$CLASS_PATH:lib/testng-6.10.jar:testSel-2.0.jar:lib/*.jar" org.testng.TestNG -testclass com.kyle.testSel.utils.TestCaseFactoryForSingle

 

核心只有一行。

就是Java在执行的时候,需要加上-cp指定Lib包路径。在指定时,需要单独指定testNG的jar路径,否则org.testng.TestNG无法运行,会提示各种错误。

 

这个问题就是搞了我一天,尴尬。

 

然后把testng.xml里面写上传递的参数和配置等等,就可以运行使用了。

 

题外话:Maven里面编译一个Jar包。

我使用了3个插件(花了一两天的时间研究这些插件)

需要在pom.xml配置文件里面,先使用maven-compiler-plugin插件,编译Java的源码。

再使用

maven-jar-plugin插件把源码,打成jar包,里面配置goal为test-jar才能生成test测试包。

 

第三步我使用了比较强大的maven-assembly-plugin插件,把各种配置文件复制到目录结构下面,生成我要的包结构。

结构大致如下:

1

 

配置放config目录,日志放logs目录。使用TestNG的测试结果会放到test-output里面。

 

几分钟跑1万个采集,效果还是爽爽的。

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: Java使用Maven进行Jar打包中遇到的一些问题总结,3Q

Java使用Maven进行Jar打包中遇到的一些问题总结:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人