继前几天开始使用Maven一步步对Maven好感倍增,它一下子解决了下载Jar包的困扰。
想想一个case,别人给你一个jar供你集成使用并告诉你依赖一些jar包,但是依赖的jar包的版本信息并没有提供(或你不确定),这时就会皱眉头,到底应该下载哪个版本呢?你只能试,但就算测试成功也不太代表jar包版本就肯定对。现在有了Maven就很大程度解决了这个问题,尤其是结合http://mvnrepository.com/使用。
除了解决了Jar包依赖和版本问题,Maven同时还提供了打包功能,下面就简单纪录一下Maven(我用的是eclipse的Maven插件--m2e)怎么打Jar包。
1.
不用额外配置,直接项目右键->Run As->Maven Build...弹出的对话框中,在Goals一栏后输入package->运行即可。
2.
运行成功后会在项目的target目录下生成你的Jar包。
注:a. 这里打出的jar包不会把依赖jar打进去;
b. 如果打包过程中出错,可以尝试右键->Maven->Update Project...
3.
这样打出的Jar已足够作为引用包来使用,但是还]不能通过下面命令直接运行
java -classpath . -jar your_jar_name.jar
因为,这个Jar中的Manifest文件没有申明Main-Class和lib。所以一个任务就是要配置manifest文件。
解决这个问题就是在POM.xml中加入下面两个plugin,注意标红的几行。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<span style="color:#FF0000;"><mainClass>com.yquants.turorial.jse.log.Log4jTest</mainClass> </span>
<span style="color:#FF0000;"><classpathPrefix>lib/</classpathPrefix></span>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>abc</url>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<span style="color:#FF0000;"><outputDirectory>target/lib</outputDirectory></span>
</configuration>
</plugin>
4.
再重新打一次jar包吧,还是用package作为goal。 这次运行之后应该能在target目录下看到你的jar包和一个lib子目录,里面有项目项目用到的其他的包。
5.
现在测试一下jar是否可直接java运行。
--成功
附录:
1. 在配置中参考了下面这篇文章:
http://blog.csdn.net/smile_juan/article/details/8293229
2. 完整的pom.xml可参考: