Maven 程序集插件排除 .gitignore

maven assembly plugin excludes .gitignore

Maven 程序集插件在最终 zip 包中排除了 .gitignore 文件。如何在最终输出 zip 中包含 .gitignore? 我试过包括 **/*,但没有用。

我的程序集文件:

<id>assembly</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
    <format>zip</format>
</formats>
<fileSets>
    <fileSet>
        <directory>${project.build.directory}/work</directory>
        <outputDirectory>/</outputDirectory>
        <excludes>
            <exclude>How*.html</exclude>
        </excludes>
    </fileSet>
</fileSets>`

汇编插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
        <descriptors>
            <descriptor>assembly/config.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>build-archive</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

三点建议:

1- 在您的程序集文件中尝试 files 元素在 fileSet 旁边。它指定要包含在程序集中的单个文件。通过提供一个或多个 file 子元素来指定文件。

2- 正确设置 baseDirectory。例如

<baseDirectory>../</baseDirectory>

3- 或者,将 includeBaseDirectory 设置为 true

<includeBaseDirectory>true</includeBaseDirectory>

经过一番研究,我发现.gitignore 和其他源存储库控制文件(.svn) 被排除在最终包中。 Maven 默认这样做。我必须明确设置标志 - false 以包含 .gitignore 文件。

根据 Maven 文档 - useDefaultExcludes -

Whether standard exclusion patterns, such as those matching CVS and Subversion metadata files, should be used when calculating the files affected by this set. For backward compatibility, the default value is true

.

想想看,Linux 和 MacOS 不会在 Finder 中显示以点开头的文件。

使用:Command + Shift + "." 显示隐藏文件。

那我也会用:

<files>
    <file>
        <source> 'absolute or relative path' </source>
    </file>
</files>

如果你认为这仍然不起作用并且它仍然忽略 .gitignore 试试这个解决方法:

  1. 将你的 .gitignore 文件重命名为 _gitignore_

enter image description here

如果 gitignore 现在在你的 zip 中作为“my-project.jar”而不是它的工作。 如果您将目标名称设置为 .gitignore 并且它只是不显示 -> 它是隐藏的。

使用:Command + Shift + "."