【构建】start.sh脚本中变量被maven profile构建过程替换
启动脚本
readonly APP_NAME="${project.artifactId}" #定义当前应用的名称
readonly JAR_VERSION="${project.version}" #打包的JAR版本
EXE_JAR="$APP_NAME-$JAR_VERSION.jar"
如何通过maven构建的时候将相应变量内容进行替换呢
依赖插件maven-resources-plugin
<!-- 资源文件打包需要关注,log4j2.xml中可以正确引导到相关变量,及脚本目录打包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<useDefaultDelimiters>true</useDefaultDelimiters><!-- 这是重点-->
</configuration>
</plugin>
配置插件配置,使得resources及bin目录下都生效
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/src/main/bin</directory>
<filtering>true</filtering>
<includes>
<include>**/*.sh</include>
</includes>
</resource>
</resources>
这样构建部署的时候,就会将变量project.artifactId替换为真正的内容,并文件存储到target/class、目录下
assembly和maven-resources-plugin 同时使用的时候不生效的问题
如何让assembly去copy编译后的脚本而非源文件内
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>755</fileMode>
<filtered>true</filtered> <!-- 这个是关键参数,加上这个copy的就是编译后的文件,不加就是copy的源文件-->
</fileSet>
原创:做时间的朋友