阻止Maven在构建的工件(jar)中包含依赖项

时间:2014-03-01 17:43:38

标签: java maven jar jenkins dependencies

我有一个Jenkins构建服务器,当新的提交被推送到GitHub项目时,它会自动将项目构建到jar中。我查看了Jenkins创建的文件的文件大小,我感到很惊讶。我得出结论,所有第三方依赖项都包含在jar工件中的

我不需要Maven将它们包含在工件中,因为这会大大增加尺寸并且没有用处。所以我摆弄了我的pom.xml文件,但我无法让它工作。依赖关系继续包含在jar中。

我对Maven比较陌生,如果有人可以帮助我,我会非常感激!

来源(如果您需要):

2 个答案:

答案 0 :(得分:1)

您可以通过提供应该包含的范围来避免将依赖项打包到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。

答案 1 :(得分:0)

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

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

如果您(也)将所有jar放在此文件夹中,那么它们将最终出现在类路径上(请参阅target/classes),因此它们将成为jar的一部分。 您只需将jar指定为依赖项,Maven将完成剩下的工作。 资源用于非java(或不可编译)文件,它们也应该在类路径中,比如Spring或Hibernate的配置文件