2013-01-16 83 views

回答

4

我認爲你可以做的最好的是定義一個屬性的默認值,如果在命令行中指定了相同的屬性,它可以被重寫。

該配置已經在maven 2.2.1下測試過。

  1. 定義你財產你的POM:

    <properties> 
         <finalname>dropbox</finalname> 
    </properties> 
    
  2. 在POM,例如地方使用它

    <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-assembly-plugin</artifactId> 
         <configuration> 
          <archive> 
           <manifest> 
            <mainClass>com.dengjintian.uploader.Main</mainClass> 
           </manifest> 
          </archive> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <finalName>${finalname}</finalName> 
          <appendAssemblyId>false</appendAssemblyId> 
         </configuration> 
         <!-- This will bind assembly:make-assembly to the package phase --> 
         <executions> 
          <execution> 
           <id>make-assembly</id> 
           <phase>package</phase> 
           <goals> 
            <goal>single</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
    
  3. 通過命令行覆蓋它:

    mvn clean install -Dfinalname=dropboxtmp 
    
+0

是否有可能將環境變量集成到某個地方? – mark

+0

我認爲在maven 2.2.1嘗試幾次後是不可能的。 Maven參考環境變量,例如xxx,通過$ {env.xxx}。你可以通過「export xxx = yyy」來定義它。但是如果你把這樣的變量放在塊中,它可以通過命令行* *覆蓋。 –

+0

就像魅力一樣......我可以從配置元素覆蓋配置文件中的屬性。 –

0

answered幾個月前的一個類似的問題。我不確定這正是你在找什麼,但可能會讓你開始。

+0

有必須做一個更自然的方式。提出的使用配置文件的解決方案似乎是一種矯枉過正。 – mark