我有一个Jenkins构建服务器,当新提交已被推送到GitHub项目时,它会自动将项目构建到jar中。我看着詹金斯创造的文物大小,我感到很惊讶。我得出的结论是所有的第三方依赖包括罐子神器!阻止Maven在构建的工件(jar)中包含依赖关系
我不需要Maven将它们包含在工件中,因为它会显着增加尺寸,并且它没有用处。所以我摆弄我的pom.xml文件,但我无法得到它的工作。依赖关系仍然包含在jar中。
我对Maven比较陌生,如果有人能帮助我,我会很感激的!
源(如果需要的话):
我有一个Jenkins构建服务器,当新提交已被推送到GitHub项目时,它会自动将项目构建到jar中。我看着詹金斯创造的文物大小,我感到很惊讶。我得出的结论是所有的第三方依赖包括罐子神器!阻止Maven在构建的工件(jar)中包含依赖关系
我不需要Maven将它们包含在工件中,因为它会显着增加尺寸,并且它没有用处。所以我摆弄我的pom.xml文件,但我无法得到它的工作。依赖关系仍然包含在jar中。
我对Maven比较陌生,如果有人能帮助我,我会很感激的!
源(如果需要的话):
可避免通过提供他们应该被包裹在范围包装你的jar文件里面你的依赖,但因为我看着。你的pom.xml描述符并没有发现任何错误的配置,我会建议使用maven-jar-plugin
排除所有第三方库,如下所示:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<excludes>
<exclude>*.jar</exclude>
</excludes>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
希望这会有所帮助。 BR。
非常感谢,解决了这个问题! – Staartvin
我的猜测是,这是根本原因:
<resource>
<directory>libs</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
,如果你(也)有此文件夹中所有的罐子,那么他们将结束在类路径(见target/classes
),因此,他们会成为罐子的一部分。 你只需要指定jar作为依赖项,Maven就可以完成剩下的工作。 资源用于非Java(或不可编译)文件,这些文件最终也应该在类路径中,比如Spring或Hibernate的配置文件
按照惯例,Maven不会将依赖添加到它创建的jar中。作为一个起点,我会从计算机上运行'mvn clean install'项目,然后打开jar文件(它只是一个压缩目录),然后查看是否实际存在依赖关系。然后检查由Jenkins创建的用于依赖关系的jar以隔离问题。 – Planky
我没有看到任何可以告诉它包含依赖关系的pom。 – Planky
@Planky我已经运行了这个命令,它的依赖不包含在jar中。这是否意味着Jenkins以某种方式将它们添加进来? – Staartvin