我有一个从shell脚本启动的java应用程序:run.sh。 shell脚本是构建的java应用程序的一部分,它经常变得过时,或者是错误的版本。
因此,我在构建时将支持的构建编写到shell脚本中:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>${basedir}/run.sh.template</file>
<outputFile>${basedir}/run.sh</outputFile>
<replacements>
<replacement>
<token>BUILD_VERSION</token>
<value>${VERSION}B${BUILD_NUMBER}</value>
</replacement>
</replacements>
</configuration>
</plugin>
在run.sh.template脚本中,执行以下操作:
export VERSION=BUILD_VERSION
使用以下更新将其写入新文件run.sh:
export VERSION=MYAPP1.9B199
java应用程序然后在运行时检查新导出的VERSION环境变量,以查看它是否与构建应用程序的版本匹配。如果他们不匹配,则会发出警告。
这一切都很完美,但我想混淆构建号,然后将其解码回java中的真实版本,所以它看起来像:
export VERSION=FSDHJ£$%(£$"JKSDF
然后在java中我需要能够将该字符串解码回构建号。我想阻止人们破解run.sh脚本以使其工作。