我尝试使用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>
我用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
完成的。
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文件中(我不建议这样做。)
我在.metadata
文件夹中的target/classes
文件夹中遇到了同样的问题。 .metadata
文件夹不包含在jar存档中。对我来说,它不适用于maven-jar-plugin:2.4
和鞋帮。 2.3版本正在运行。