我怎样才能使资源.gitignore
成为最终项目的一部分?
- 创建原型
archetype-resources/.gitignore
mvn install
mvn archetype:generate
- 结果项目不包含
.gitignore
PS。我确定它不存在。
我怎样才能使资源.gitignore
成为最终项目的一部分?
archetype-resources/.gitignore
mvn install
mvn archetype:generate
.gitignore
PS。我确定它不存在。
该错误似乎仍然存在于 maven-archetype-plugin v3.0.1 中。对于那些不想降级 maven-resource-plugin 的人。我设法建立了一个或多或少丑陋的解决方法。
首先,您将 archetype-resources/.gitignore 重命名为
__gitignore__
然后在里面archetype-metadata.xml
添加
<requiredProperties>
<requiredProperty key="gitignore">
<defaultValue>.gitignore</defaultValue>
</requiredProperty>
</requiredProperties>
<fileSets>
<fileSet>
<directory></directory>
<includes>
<include>__gitignore__</include>
</includes>
</fileSet>
</fileSets>
生成原型时,maven 现在将首先复制__gitignore__
然后看到__[file]__
语法并将其替换为默认值“.gitignore”
来自https://issues.apache.org/jira/browse/MRESOURCES-190的即将推出的 maven-resources-plugin v3.0.0(在发布时尚未发布;当前仍然是 2.7)的解决方案似乎比持有更好回版升级:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<!-- Required so that .gitignore gets included in archetypes; see https://issues.apache.org/jira/browse/MRESOURCES-190 -->
<addDefaultExcludes>false</addDefaultExcludes>
添加一个带有空目录标签的fileSet
条目:src/main/resources/META-INF/maven/archetype-metadata.xml
<fileSet>
<directory></directory>
<includes>
<include>.gitignore</include>
</includes>
</fileSet>
这会将包含的文件复制src/main/resources/archetype-resources
到项目根目录。
通过在调试时启动 Maven 构建(使用 -X 选项)检查您的 maven-resources-plugin 版本。如果您使用 2.7,则会出现 .gitignore 文件被静默忽略的回归。
在这种情况下,您必须在 pom.xml 中明确使用 2.6:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</pluginManagement>
</build>
ARCHETYPE/issues/ARCHETYPE-505表明,当前版本的插件和 maven 彻底打破了这一点。没有解决方法对此有帮助。
对我来说完美的解决方案是使用原型安装后 groovy 脚本。
在原型项目的资源文件夹中创建一个文件META-INF/archetype-post-generate.groovy
。
添加此代码:
file = new File( request.getOutputDirectory(), request.getArtifactId()+"/.gitignore.tmpl" );
def gitIgnorefile = new File( request.getOutputDirectory(), request.getArtifactId()+"/.gitignore" );
file.renameTo(gitIgnorefile)
在您的archetype-metadata.xml
文件中包含模板.gitignore.tmpl
文件。
<fileSet>
<directory/>
<includes>
<include>.gitignore.tmpl</include>
</includes>
</fileSet>
我在使用 maven 资源插件时遇到了问题,因此使用了 groovy 脚本解决方案。
该错误仍然存在于最新的 maven-archetype-plugin 2.4 和 maven-resources-plugin 3.0.1 中。
这是解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
在您生成的 pom.xml 中,您应该添加
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
降级的替代方法maven-resources-plugin
是强制执行plexus-utils
实际上具有回归的版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<dependencies>
<!-- it's for fixing maven-resources-plugin 2.7 MRESOURCES-190 -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<!-- this is last 2.x release -->
<version>2.1</version>
</dependency>
</dependencies>
</plugin>