【構建】start.sh指令碼中變數被maven profile構建過程替換

做时间的好朋友發表於2024-04-18

啟動指令碼

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>

相關文章