maven插件构建可执行jar以及maven插件tip
2011-03-01 15:34
281 查看
使用 Maven 构建一个 JAR 文件比较容易:只要定义项目包装为 “jar”,然后执行包装生命周期阶段即可。但是定义一个可执行 JAR 文件却比较麻烦。采取以下步骤可以更高效:
在您定义可执行类的 JAR 的 MANIFEST.MF 文件中定义一个
找到您项目依赖的所有库。
在您的 MANIFEST.MF 文件中包含那些库,便于您的应用程序找到它们。
您可以手工进行这些操作,或者要想更高效,您可以使用两个 Maven 插件帮助您完成:
所有 Maven 插件通过一个
当您使用这 3 个元素配置好了 MANIFEST.MF 文件之后,下一步是将所有的依赖项复制到
将您的依赖项和修改的 MANIFEST.MF 放在适当的位置后,您就可以用一个简单的命令启动应用程序:
在您定义可执行类的 JAR 的 MANIFEST.MF 文件中定义一个
main类。(MANIFEST.MF 是包装您的应用程序时 Maven 生成的。)
找到您项目依赖的所有库。
在您的 MANIFEST.MF 文件中包含那些库,便于您的应用程序找到它们。
您可以手工进行这些操作,或者要想更高效,您可以使用两个 Maven 插件帮助您完成:
maven-jar-plugin和
maven-dependency-plugin。
maven-jar-plugin可以做很多事情,但在这里,我们只对使用它来修改默认 MANIFEST.MF 文件的内容感兴趣。在您的 POM 文件的插件部分添加清单 1 所示代码:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.mypackage.MyClass</mainClass> </manifest> </archive> </configuration> </plugin> |
<configuration>元素公布了其配置,在本例中,
maven-jar-plugin修改它的
archive属性,特别是存档文件的
manifest属性,它控制 MANIFEST.MF 文件的内容。包括 3 个元素:
addClassPath:将该元素设置为 true 告知
maven-jar-plugin添加一个
Class-Path元素到 MANIFEST.MF 文件,以及在
Class-Path元素中包括所有依赖项。
classpathPrefix:如果您计划在同一目录下包含有您的所有依赖项,作为您将构建的 JAR,那么您可以忽略它;否则使用
classpathPrefix来指定所有依赖 JAR 文件的前缀。在清单 1 中,
classpathPrefix指出,相对存档文件,所有的依赖项应该位于 “
lib” 文件夹。
mainClass:当用户使用
lib命令执行 JAR 文件时,使用该元素定义将要执行的类名。
当您使用这 3 个元素配置好了 MANIFEST.MF 文件之后,下一步是将所有的依赖项复制到
lib文件夹。为此,使用
maven-dependency-plugin,如清单 2 所示:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>install</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin> |
maven-dependency-plugin有一个
copy-dependencies,目标是将您的依赖项复制到您所选择的目录。本例中,我将依赖项复制到
build目录下的
lib目录(
project-home/target/lib)。
将您的依赖项和修改的 MANIFEST.MF 放在适当的位置后,您就可以用一个简单的命令启动应用程序:
java -jar jarfilename.jar maven 插件tip 在pom中配置maven的作用是可以做一个预先的配置,并且可以配置这个插件在生命周期的某个阶段运行这个插件.每个插件都是AbstractMojo 类的实现,一个Mojo对应了插件的一个goal,goal和接收参数的名称可以在实现中用javadoc指定,如: /** * @goal greeting */ public class GreetingMojo extends AbstractMojo 插件工程的package形式是maven-plugin,install之后会在插件的jar目录META-INF/maven下形成一个插件描述文件,这个描述文件指定了 插件的基本信息,支持的goal和每个goal需要的参数等以及插件的maven依赖。 maven使用plexus作为IoC框架管理插件。 |
相关文章推荐
- dubbo总结(5)——使用maven构建可执行jar包
- [置顶] dubbo-3 使用maven构建dubbo可执行jar包
- 使用maven构建dubbo服务的可执行jar包
- 构建maven工程打包成jar在hadoop上执行
- 使用eclipse mybatis generator插件在maven 项目中自动构建代码以及遇到的一些坑
- 使用eclipse执行maven-release-plugin插件发布jar异常问题(.project)(Cannot prepare the release because you have local modifications )
- 跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
- maven打可执行的jar包以及classpath设置
- 跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
- maven构建可执行jar包
- Dubbo基础编二_使用Maven构建Dubbo服务可执行jar包
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- 使用maven-shade-plugin构建可执行jar 解决junit4测试问题 maven项目
- Dubbo之使用Maven构建服务的可执行jar包
- maven 构建可执行的jar 配置
- [Maven]Maven构建可执行的jar包(包含依赖jar包)
- maven可执行jar包插件
- Maven构建成功后复制jar包到指定位置插件
- [Maven]Maven构建可执行的jar包(包含依赖jar包)
- 使用Maven构建dubbo服务可执行的jar包--待完善