[英]How to variablize shell script output on maven pom.xml to use
我想知道有沒有辦法讓maven執行一個shell腳本來卷曲資源並使響應可用,就像maven可以引用的環境變量或全局變量一樣,還是可以用Groovy
來實現?
所以當我做maven構建時我想要執行這個shell腳本。 腳本本身將卷曲到一些資源URI並輸出響應(我們可能必須等待它返回),並且maven或者可能Groovy可以以某種方式獲得卷曲響應並使用它來設置一些配置。
以下是建議的方法:
這種方法的要求:
有關Maven階段的完整列表,請參閱此處的官方文檔
更新 :下面是一個流程示例,剛剛測試並且工作正常(在Windows機器上):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>generation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>retrieve-config</id>
<phase>validate</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>echo</executable>
<arguments>
<argument>jar.name=from-exec</argument>
<argument>></argument>
<argument>config.properties</argument>
</arguments>
<workingDirectory>${basedir}/src/main/resources/</workingDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>read-properties</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/src/main/resources/config.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>${jar.name}</finalName>
</configuration>
</plugin>
</plugins>
</build>
</project>
基本上,附加到validate
階段的exec插件將在構建開始時執行,寫入config.properties文件(通過echo命令)內容jar.name=from-exec
。
然后附加到initialize
階段的屬性插件將讀取該config.properties文件並加載要用作構建的一部分的屬性。
然后,作為示例,jar插件將使用該屬性作為其配置的一部分( <finalName>${jar.name}</finalName>
部分)。
運行mvn clean package
,您將在目標文件夾中找到from-exec.jar
文件。
更新 :上面是如何從腳本動態加載一組屬性的示例,然后可以將這些屬性注入Maven構建(因此用作POM配置的一部分)。
但是,如果您需要將此動態配置加載到您的應用程序中,您甚至可以跳過第二步(Propeprties Maven插件)並從代碼中的config.properties
文件加載屬性,只要該文件是該文件的一部分即可。應用程序類路徑(如上例所示,放在src/main/resources
)。
由於屬性文件的創建發生在早期Maven階段( validate
或initialize
),因此test
(對於您的測試)和package
(對於您的最終人工制品)階段可以根據需要使用它。
在Java中,您將使用java.util.Properties
類,在Groovy中,您可以按照此處的說明,從stackoverflow中的另一個問題開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.