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

maven-jar-plugin does not include .gitignore file

我尝试使用 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>

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

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

原来v2.5以后就不行了

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

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

完成的

包含.gitignoremaven-resources-plugin plugin has some kind of configuration which excludes some 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 文件中(我不建议这样做。)

我对 target/classes 文件夹中的 .metadata 文件夹有同样的问题。 .metadata 文件夹未包含在 jar 存档中。 对我来说,它不适用于 maven-jar-plugin:2.4 及更高版本。对于 2.3 版,它正在运行。

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