2014-07-11 48 views
6

我做了一個原型,對我的項目之一有一個託管依賴項。 每當使用我的原型創建新項目時,是否有可能告訴原型始終使用該依賴項的最新版本?使用RELEASE不適用於我,因爲我不想在每次構建項目時更改版本。原型應始終使用最新版本的依賴關係

<?xml version="1.0" encoding="utf-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>${groupId}</groupId> 
    <artifactId>${artifactId}</artifactId> 
    <version>${version}</version> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>com.mycompany.someproject</groupId> 
      <artifactId>someDependency</artifactId> 
     </dependency> 
    </dependencies> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.mycompany.myproject</groupId> 
       <artifactId>myArtifact</artifactId> 

       <version>LATEST</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

我讀this的問題,但使用Maven的版本,插件建議的解決方案似乎不適合的原因有兩個。首先,我想在創建項目時更改版本,其次我不想更改所有依賴項的版本,但只更改一個。

編輯:上面是來自archetype-resources(更新)的pom.xml,下面是我的archetype-project本身的pom.xml。

<?xml version="1.0" encoding="UTF-8"?> 

<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> 
    <parent> 
     <groupId>com.mycompany.maven.archetype.be</groupId> 
     <artifactId>maven-archetype-be-_moduleList</artifactId> 
     <version>1.3-SNAPSHOT</version> 
     <relativePath>../maven-archetype-be</relativePath> 
    </parent> 
    <artifactId>archetype-be-api</artifactId> 
    <packaging>maven-archetype</packaging> 
    <dependencies /> 
    <name>archetype-be-api</name> 
</project> 

EDIT2: RELEASELATEST似乎無法在管理依賴關係在所有的工作。任何人都可以確認或禁用該聲明?

+0

即使你想這樣做只有一個依賴,你可能要重新考慮它,因爲它可能會導致一些嚴重的問題,因爲你可能沒有意識到的變化。但如果你想這樣做,你可以看看這個鏈接,它很好地解釋了你的問題。 http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency – SerhatCan

回答

1

你可以把

<dependency> 
     <groupId>com.mycompany.myproject</groupId> 
     <artifactId>my-artifact</artifactId> 
     <version>LATEST</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 

LATEST既解決了最新版本,並通過-U當你建立

,或者如果你不想指定-U每次您可以settings.xml~/.m2配置像

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    ... 
    <profiles> 
    <profile> 
     ... 
     <repositories> 
     <repository> 
      <id>codehausSnapshots</id> 
      <name>Codehaus Snapshots</name> 
      <releases> 
      <enabled>false</enabled> 
      <updatePolicy>always</updatePolicy> // <-- this will update each release artifact from this repository each time 
      <checksumPolicy>warn</checksumPolicy> 
      </releases> 
      <url>http://snapshots.maven.codehaus.org/maven2</url> 
      <layout>default</layout> 
     </repository> 
     </repositories> 
     <pluginRepositories> 
     ... 
     </pluginRepositories> 
     ... 
    </profile> 
    </profiles> 
    ... 
</settings> 

當你運行ËMVN產生從原型項目的項目仍可以指定最新的,例如

mvn archetype:generate 
    -DarchetypeGroupId=you_archetype_group_id 
    -DarchetypeArtifactId=sample-spring-mvc-archetype 
    -DarchetypeVersion=LATEST -DgroupId=new.project.id 
    -DartifactId=sample 
    -DarchetypeRepository=path_to_maven_repo_with_archetype_jar 
+0

謝謝你的迴應,但那不是我想要的去做。 我想檢查最新版本,當一個項目**創建**與我的原型,而不是每次它的內置。 – Kayz

+0

可以請你更新你的原型rpoject –

+0

的pom.xml,請看我更新的問題。 – Kayz

相關問題