Maven(m2e)集成之二

继前几天开始使用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可参考:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值