问题描述
我使用 git-crypt (https://github.com/AGWA/git-crypt) 在我的 Java Maven 项目中加密包含敏感数据(密码等)的属性文件。 >
准备发布运行没有问题。 但是“mvn 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>