2014-03-01 147 views
0

我有一个Jenkins构建服务器,当新提交已被推送到GitHub项目时,它会自动将项目构建到jar中。我看着詹金斯创造的文物大小,我感到很惊讶。我得出的结论是所有的第三方依赖包括罐子神器阻止Maven在构建的工件(jar)中包含依赖关系

我不需要Maven将它们包含在工件中,因为它会显着增加尺寸,并且它没有用处。所以我摆弄我的pom.xml文件,但我无法得到它的工作。依赖关系仍然包含在jar中。

我对Maven比较陌生,如果有人能帮助我,我会很感激的!

源(如果需要的话):

+2

按照惯例,Maven不会将依赖添加到它创建的jar中。作为一个起点,我会从计算机上运行'mvn clean install'项目,然后打开jar文件(它只是一个压缩目录),然后查看是否实际存在依赖关系。然后检查由Jenkins创建的用于依赖关系的jar以隔离问题。 – Planky

+0

我没有看到任何可以告诉它包含依赖关系的pom。 – Planky

+0

@Planky我已经运行了这个命令,它的依赖不包含在jar中。这是否意味着Jenkins以某种方式将它们添加进来? – Staartvin

回答

0

可避免通过提供他们应该被包裹在范围包装你的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。

+0

非常感谢,解决了这个问题! – Staartvin

0

我的猜测是,这是根本原因:

<resource> 
    <directory>libs</directory> 
    <excludes> 
<exclude>**/*.java</exclude> 
    </excludes> 
</resource> 

,如果你(也)有此文件夹中所有的罐子,那么他们将结束在类路径(见target/classes),因此,他们会成为罐子的一部分。 你只需要指定jar作为依赖项,Maven就可以完成剩下的工作。 资源用于非Java(或不可编译)文件,这些文件最终也应该在类路径中,比如Spring或Hibernate的配置文件

相关问题