啟動指令碼
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>