我尝试使用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>
答案 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版中,它可以正常工作。