如何: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运行配置:

maven安装部署jar

问题是我生成的.jar它没有包含依赖项….如何配置pom.xml以包含.jar格式的所有依赖项而不是解压缩..因为似乎unpacked无法正常工作…

为了确保包括所有jar都没问题。我下载并将每个库添加到jar/lib文件夹中并且jar正在运行…所以..我唯一的问题是:如何配置pom.xml以便以jar格式添加我的所有依赖项?

我尝试了所有方法:

  1. assembly:assembly
  2. assembly:single
  3. assembly:single使用我的描述符(一个assemble.xml文件),但它无法正常工作
  4. 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环境变量。