【构建】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>
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2023-04-18 内部类与静态内部类