maven-jar-plugin不包含.gitignore文件

问题描述 投票:1回答:3

我尝试使用maven将应用程序打包到jar文件中。不知何故,除了.gitignore文件之外的所有文件都被添加到jar中。

为什么跳过此文件,如何禁用此文件?

即使我尝试像下面那样包含它,也会忽略include并且jar文件仍为空。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <includes>
      <include>**/.gitignore</include>
    </includes>
  </configuration>
</plugin>
  • maven-jar-plugin版本:3.1.0
  • maven版本:3.5.2
maven gitignore maven-jar-plugin
3个回答
2
投票

我用src/main/resources/.gitignore尝试了这个,它使用默认的maven-jar-plugin:2.4,即.gitignore被打包到JAR中。

然后我用你提到的maven-jar-plugin:3.1.0,它没有用,正如你所描述的那样。

原来它从v2.5开始不起作用。


2
投票

第一件事是使用jar文件示例项目是惊人的。我永远不会期望在.jar文件中包含示例项目。 jar文件的用意是不同的。我建议使用更合适的东西,如.zip.tar.gz等。(这可以通过maven-assembly-plugin实现)这将防止意外的非预期用途。

除了整个问题之外,还基于资源的定义,这些资源通常从src/main/resources复制到target/classes目录。这是由maven-resources-plugin完成的。

maven-resources-plugin插件有某种配置,不包括一些包含files which are usually not copied.gitignore。所以这意味着只需将.gitignore文件放入src/main/resources就不会产生预期的结果,也不会使用<includes>..</includes>配置也无济于事。

这意味着您需要通过pluginManagement部分更改maven-resources-plugin的默认配置,如下所示:

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <addDefaultExcludes>false</addDefaultExcludes>
          </configuration>
        </plugin>

将复制.gitignore文件,并将其打包到生成的jar文件中(我不建议这样做。)


0
投票

我在.metadata文件夹中的target/classes文件夹中遇到了同样的问题。 .metadata文件夹不包含在jar存档中。对我来说,它不适用于maven-jar-plugin:2.4和鞋帮。 2.3版本正在运行。

我提交了这个问题:https://issues.apache.org/jira/browse/MJAR-265

© www.soinside.com 2019 - 2024. All rights reserved.