33

我怎样才能使资源.gitignore成为最终项目的一部分?

  1. 创建原型archetype-resources/.gitignore
  2. mvn install
  3. mvn archetype:generate
  4. 结果项目不包含.gitignore

PS。我确定它不存在。

4

8 回答 8

30

该错误似乎仍然存在于 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”

于 2018-03-01T14:53:47.953 回答
22

来自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>
于 2016-05-19T11:49:04.920 回答
13

添加一个带有空目录标签的fileSet条目:src/main/resources/META-INF/maven/archetype-metadata.xml

<fileSet>
  <directory></directory>
  <includes>
    <include>.gitignore</include>
  </includes>
</fileSet>

这会将包含的文件复制src/main/resources/archetype-resources到项目根目录。

于 2012-01-18T12:12:17.830 回答
9

通过在调试时启动 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>
于 2015-04-03T07:23:09.573 回答
5

ARCHETYPE/issues/ARCHETYPE-505表明,当前版本的插件和 maven 彻底打破了这一点。没有解决方法对此有帮助。

于 2020-07-09T14:04:45.183 回答
2

对我来说完美的解决方案是使用原型安装后 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 脚本解决方案。

于 2020-05-12T17:32:49.093 回答
0

该错误仍然存​​在于最新的 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>
于 2016-08-12T05:43:36.093 回答
0

降级的替代方法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>
于 2015-07-31T06:39:53.560 回答