个人觉得 第二种方法更好。
基于Maven构建的项目的方法:
一:
将项目所支持的所有类库打在一个包中,而不是只将项目编译打包到一个jar中。这样便可以直接拷贝一个jar去执行了。
Xml代码
1. <plugin>
2. <artifactId>maven-assembly-plugin</artifactId>
3. <configuration>
4. <appendAssemblyId>false</appendAssemblyId>
5. <descriptorRefs>
6. <descriptorRef>jar-with-dependencies</descriptorRef>
7. </descriptorRefs>
8. <archive>
9. <manifest>
10. <mainClass>com.ebay.montage.eventprocessor.collector.CodeRollOutEventDataCollector</mainClass>
11. </manifest>
12. </archive>
13. </configuration>
14. <executions>
15. <execution>
16. <id>make-assembly</id>
17. <phase>package</phase>
18. <goals>
19. <goal>assembly</goal>
20. </goals>
21. </execution>
22. </executions>
23. </plugin>
使用命令:
mvn assembly:assembly -DskipTests
这里就会在target目录下生成*.jar文件,
直接运行jar文件: Java -jar *.jar
备注:当然也可以使用mvn clean install -DskipTests 来构建生成jar包。
二:
注意绿色部分,自行定义内容。
在 maven 工程中,我们也可以很方便的打包成可执行的 jar 包。默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件:
- JAR包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。
- 项目所有的依赖都必须在Classpath中,其可以通过 MANIFEST.MF 指定或者隐式设置。
Xml代码
1. <plugins>
2. <plugin>
3. <groupId>org.apache.maven.plugins</groupId>
4. <artifactId>maven-jar-plugin</artifactId>
5. <configuration>
6. <archive>
7. <manifest>
8. <addClasspath>true</addClasspath>
9. <classpathPrefix>lib/</classpathPrefix>
10. <mainClass>com.ebay.montage.eventprocessor.collector.MySpace</mainClass>
11. </manifest>
12. <manifestEntries>
13. <Class-Path>.</Class-Path>
14. </manifestEntries>
15. </archive>
16.
17. <finalName>eventprocessor</finalName>
18. <excludes>
19. <exclude>**/*.properties</exclude>
20. <exclude>**/*.xml</exclude>
21. </excludes> -->
22. </configuration>
23. </plugin>
24.
25. <plugin>
26. <groupId>org.apache.maven.plugins</groupId>
27. <artifactId>maven-dependency-plugin</artifactId>
28. <executions>
29. <execution>
30. <id>copy-dependencies</id>
31. <phase>prepare-package</phase>
32. <goals>
33. <goal>copy-dependencies</goal>
34. </goals>
35. <configuration>
36. <outputDirectory>${project.build.directory}/lib</outputDirectory>
37. <overWriteReleases>false</overWriteReleases>
38. <overWriteSnapshots>false</overWriteSnapshots>
39. <overWriteIfNewer>true</overWriteIfNewer>
40. </configuration>
41. </execution>
42. </executions>
43. </plugin>
44. </plugins>
使用mvn clean install -DskipTests打jar 包。
这样打好jar包后就可以使用:java -jar eventprocessor.jar Myspace,
当然了前提是在Myspace中有一个main方法。这样便可直接去执行Myspace中的main方法了。
如果要将jar包放到别的机器上去运行的话,需要将targe中的lib下的内容(上面命令中指定)也同样拷贝过去,因为默认情况下:maven只是将项目编译打包到一个jar中,而其它的类库在上面手动的指定被放到了lib中,所以在执行的时候必须要引用才行。