Übergabe von Befehlszeilenargumenten von Maven als Eigenschaften in pom.xml

Ist es möglich, Argumente von der Befehlszeile an Eigenschaften in pom.xml Datei übergeben? zum Beispiel mvn ... argument ich mvn ... argument

und in pom.xml

   here should add argument from command line  

Danke für die Hilfe.

Für Ihr Immobilienbeispiel tun Sie Folgendes:

 mvn install "-Dmyproperty=my property from command line" 

Notieren Sie sich die gesamte Definition der Eigenschaft. Sie benötigen sie, wenn Ihre Unterkunft Leerzeichen enthält.

In pom.xml

  

…..

   linux64  true   linux gtk x86_64    win64   env win64    win32 win32 x86_64    

…..

  org.eclipse.tycho target-platform-configuration ${tycho.version}    ${build_os} ${build_ws} ${build_arch}     

…..

In diesem Beispiel, wenn Sie den Pom ohne irgendein Argument ausführen, wird das Standardprofil mvn clean install ausgeführt.

Bei Ausführung mit mvn -Denv=win64 clean install

Das win64-Profil wird ausgeführt.

Bitte beachten Sie http://maven.apache.org/guides/introduction/introduction-to-profiles.html

Ich habe das Eigenschaften-Plugin benutzt, um das zu lösen.

Eigenschaften werden im Pom definiert und in eine Datei mit der Bezeichnung my.properties geschrieben, auf die dann von Ihrem Java-Code aus zugegriffen werden kann.

In meinem Fall ist es Testcode, der auf diese Eigenschaftendatei zugreifen muss, also wird die Eigenschaftendatei in den pom in testOutputDirectory von maven geschrieben:

  ${project.build.testOutputDirectory}/my.properties  

Verwenden Sie outputDirectory, wenn der App-Code auf Eigenschaften zugreifen soll:

  ${project.build.outputDirectory}/my.properties  

Für diejenigen, die ein vollständigeres Beispiel suchen (es hat mich ein wenig umständlich gemacht, das funktioniert zu bekommen, weil ich nicht verstanden habe, wie die Benennung von Eigenschaften-Tags die Fähigkeit beeinflusst, sie an anderer Stelle in der Pom-Datei abzurufen), sieht mein Pom wie folgt aus:

   ...    ${app.env} ${app.port} ${app.domain}     org.apache.maven.plugins maven-surefire-plugin 2.20   org.codehaus.mojo properties-maven-plugin 1.0.0   generate-resources  write-project-properties   ${project.build.testOutputDirectory}/my.properties       

Und auf der Kommandozeile:

 mvn clean test -Dapp.env=LOCAL -Dapp.domain=localhost -Dapp.port=9901 

Auf diese Eigenschaften kann also über den Java-Code zugegriffen werden:

  java.io.InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("my.properties"); java.util.Properties properties = new Properties(); properties.load(inputStream); appPort = properties.getProperty("app.port"); appDomain = properties.getProperty("app.domain"); 

Sie können Variablennamen als Projektdateien angeben. Zum Beispiel in Ihrer Plugin-Konfiguration geben Sie nur ein Tag wie folgt: –

 ${projectName} 

Dann können Sie auf der Kommandozeile den Projektnamen als Parameter übergeben:

 mvn [your-command] -DprojectName=[name of project]