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

时间:2019-04-04 11:24:14

标签: maven gitignore maven-jar-plugin

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

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

即使我尝试像下面这样包含它,也将被忽略,并且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

3 个答案:

答案 0 :(得分:2)

我使用gradlew createDebugCoverageReport 进行了尝试,并使用默认的src/main/resources/.gitignore,即maven-jar-plugin:2.4已打包到JAR中。

然后,我使用了您提到的.gitignore,但正如您所描述的,它无效有效。

事实证明,从v2.5开始,该功能不起作用。

答案 1 :(得分:2)

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

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

maven-resources-plugin插件具有某种配置,其中排除了包含.gitignore的某些files which are usually not copied。因此,这意味着仅将.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文件中(我不建议这样做。)

答案 2 :(得分:0)

我在.metadata文件夹中的target/classes文件夹中遇到了同样的问题。 .metadata文件夹未包含在jar存档中。 对我而言,它不适用于maven-jar-plugin:2.4及更高版本。在2.3版中,它可以正常工作。

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