2014-07-11 47 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

相关问题