2011-11-07 26 views
9

Ben komut satırı üzerinden benim değişkeninde geçmesi, böylece Yapımın set-up:Maven'de eksik ortam özelliği nasıl belirlenir ve ayarlanır?

benim pom olarak
mvn clean install -DsomeVariable=data 

Ben:

<someTag>${someVariable}</someTag> 

Bu iyi çalışır, ama ben istiyorum komut satırında someVariable belirtilmemişse tanımlayın ve sonra betiğimin devam edebilmesi için varsayılanı belirleyin.

Bu Maven'de yapılabilir mi?

<properties> 
    <someVariable>myVariable</someVariable> 
</properties> 

Eğer özellik değeri bir komut satırında verilen DAİMA olduğundan emin olmak için, o zaman kullanabilirsiniz:

cevap

12

Sen POM dosyasının properties bölümünde varsayılan özellik değeri belirtebilirsiniz maven-icracı-eklentisi. İşte

sistem özelliği varlığını nasıl zorlanacağını gösteren bir link -> http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html

Sadece kelimesi kelimesine burada XML kopyalayacağımız durumda yukarıdaki bağlantı kötü gider.

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-enforcer-plugin</artifactId> 
     <version>1.0.1</version> 
     <executions> 
      <execution> 
      <id>enforce-property</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <configuration> 
       <rules> 
       <requireProperty> 
        <property>basedir</property> 
        <message>You must have a basedir!</message> 
        <regex>\d</regex> 
        <regexMessage>You must have a digit in your baseDir!</regexMessage> 
       </requireProperty> 
       <requireProperty> 
        <property>project.version</property> 
        <message>"Project version must be specified."</message> 
        <regex>(\d|-SNAPSHOT)$</regex> 
        <regexMessage>"Project version must end in a number or -SNAPSHOT."</regexMessage> 
       </requireProperty> 
       </rules> 
       <fail>true</fail> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 
+0

Thank-sen anlayışlı tepki Alex için. Her ne kadar zorlamaktan ziyade mülkiyeti varsayılan olarak aramak istiyorum. Yani belirtilmezse, betik varsayılan değeri kullanır. – TERACytE

+0

@TERACytE. Evet, 'properties' bölümünde bir değer varsayılantır ve her zaman komut satırından yazabilirsiniz. –

+0

Cevabınız için teşekkür ederiz. – TERACytE

2

yerine profiller kullanabilirsiniz, ancak her değişken için bir profil gerekir. Eğer maven komutu çalıştırdığınızda

<profile> 
    <id>default-value-1</id> 
    <activation> 
      <activeByDefault>false</activeByDefault> 
      <property> 
      <name>!someVariable</name> 
      </property> 
    </activation> 
    <properties> 
     <someVariable>DEFAULT-VALUE</someVariable> 
    </properties> 
</profile> 
4

Sen gibi bu değeri geçersiz kılabilir,

<properties> 
     <someTag>defaultValue</someTag> 
</properties> 

olarak varsayılan değeri belirtebilirsiniz bu

mvn clean package -DsomeTag=newSpecificValue 
+0

Küçük bir çözüm, bir Jenkins yapısında kullanmam gerekiyordu – pdem

İlgili konular