如何:Eclipse Maven安装带有依赖项的构建jar
我在Eclipse中使用Eclipse Maven(m2e),我正在运行我的项目:
我的pom.xml
看起来像这样:
4.0.0 ro.project jar 1.0-SNAPSHOT ro.project 3.1.1.RELEASE 4.1.0.Final org.springframework spring-core ${org.springframework.version} org.apache.maven.plugins maven-jar-plugin true lib/ ro.project.ProjectServer maven-antrun-plugin com.sun tools 1.7.0_02 system ${java.home}/../lib/tools.jar ant-magic prepare-package run project-core http://www.project.ro
我运行maven安装后它正在工作……
Maven运行配置:
问题是我生成的.jar
它没有包含依赖项….如何配置pom.xml
以包含.jar
格式的所有依赖项而不是解压缩..因为似乎unpacked无法正常工作…
为了确保包括所有jar都没问题。我下载并将每个库添加到jar
的/lib
文件夹中并且jar正在运行…所以..我唯一的问题是:如何配置pom.xml
以便以jar
格式添加我的所有依赖项?
我尝试了所有方法:
-
assembly:assembly
-
assembly:single
-
assembly:single
使用我的描述符(一个assemble.xml
文件),但它无法正常工作 -
maven copy dependencies
插件但仍然无法使用Eclipse Maven –m2e
我没有解决方案……任何人都可以告诉我在jar中添加依赖项的正确方法吗? 我无法相信maven
是如此复杂,我无法在任何地方找到答案。
先谢谢你
有两种方法可以做到这一点。
1)如果你想要一个超级jar(重新打包所有依赖项),请查看使用和配置maven-shade-plugin :
org.apache.maven.plugins maven-shade-plugin 1.6 package shade com.group.id.Launcher1
这将解压缩所有依赖项并将它们合并到一个JAR文件中。
2)如果你想在捆绑包中提供一个包(zip,tar.gz等)和解压缩的JAR文件(可能在lib /下),那么你需要查看maven-assembly-plugin :
org.apache.maven.plugins maven-assembly-plugin 2.3 create-distro package single src/main/assembly/dist.xml
请注意,这需要一个程序集描述符src/main/assembly/dist.xml
,示例如下所示:
distribution zip false false false runtime 0755 0755 bin com.group.id:project-launch1 com.group.id:project-launch2 false true false runtime 0644 0755 lib com.group.id:project-lib1 com.group.id:project-lib2 com.group.id:project-lib3 com.group.id:project-lib4
既然您现在正在组装依赖项,那么最好在pom.xml中定义依赖项,如下所示:
com.group.id project-launch1 0.0.1-SNAPSHOT jar com.group.id project-launch2 0.0.1-SNAPSHOT jar com.group.id project-lib1 0.0.1-SNAPSHOT jar ... and so on ...
3)如果要提供带有可执行JAR文件启动程序的软件包,除了maven-assembly-plugin之外,您可能还需要添加maven-jar-plugin配置:
com.group.id project-lib1 0.0.1-SNAPSHOT jar com.group.id project-lib2 0.0.1-SNAPSHOT jar com.group.id project-lib3 0.0.1-SNAPSHOT jar ... and so on ... maven-jar-plugin false true com.group.id.Launcher1 true ../lib/
请注意,“addClasspath”指令将项目依赖项添加到类路径。 这是JAR启动器所必需的,因为它们显式地忽略了所有CLASSPATH环境变量。