【构建】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>
posted @ 2024-04-18 13:50  SpecialSpeculator  阅读(24)  评论(0编辑  收藏  举报