如何 release:perform 与 git 加密的文件

How to release:perform with git-crypted files

我使用 git-crypt (https://github.com/AGWA/git-crypt) 加密了一个包含敏感数据(密码等)的 属性 文件Java Maven 项目.

准备发布 运行 没有问题。 但是 "mvn release:perform" 的执行失败了 因为这个操作是自动化的:

问题是,我的 属性 文件是 加密签出的 ,因此某些集成测试的执行失败。

应该可以在 release:perform 过程中以某种方式自动解密我的文件。

我需要这样的解决方案:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <phase>deploy</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>cmd</executable>
                <arguments>
                    <argument>/c</argument>
                    <argument>git-crypt unlock my-unlock-keyfile</argument>
                </arguments>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <completionGoals>exec:exec</completionGoals>
            </configuration>
        </plugin>
    </plugins>
</build>

但遗憾的是,此代码仅适用于准备发布。

我现在找到了可行的解决方案:

<build>
    <plugins>   
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>cmd</executable>
                <arguments>
                    <argument>/c</argument>
                    <argument>git-crypt unlock path\to\my-unlock-keyfile</argument>
                </arguments>
                <successCodes>
                    <successCode>0</successCode>
                    <successCode>1</successCode> <!-- while release preparation exit code 1 it thrown because of unsaved changes; this is only a workaround; -->
                </successCodes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
        </plugin>
    </plugins>
</build>