【问题标题】:Archetype should always use latest version of dependencyArchetype 应始终使用最新版本的依赖项
【发布时间】:2014-07-11 14:30:46
【问题描述】:

我创建了一个原型,它对我的​​一个项目具有托管依赖关系。 每当使用我的原型创建新项目时,是否有可能告诉原型始终使用该依赖项的最新发布版本?使用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-versions-plugin 的建议解决方案似乎不适合,原因有两个。首先,我想在创建项目时更改版本,其次我不想更改所有依赖项的版本,而只更改一个。

编辑:上面是来自原型资源的 pom.xml(更新),下面是来自我的原型项目本身的 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 在托管依赖项中似乎根本不起作用。任何人都可以确认或禁用该声明吗?

【问题讨论】:

  • 即使您只想为一个依赖项执行此操作,您也可能需要重新考虑它,因为由于您可能不知道的更改,它可能会导致一些严重的问题。但是,如果您想这样做,您可以查看此链接,它很好地解释了您的问题。 stackoverflow.com/questions/30571/…

标签: maven maven-archetype


【解决方案1】:

你可以放

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

LATEST 将解析最新的可用版本并在您构建时传递-U

或者如果您不想每次都指定-U,您可以在~/.m2 中配置settings.xml 类似

<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 以从您的原型项目生成项目时,您仍然可以指定 LATEST,例如

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

【讨论】:

  • 感谢您的回复,但这不是我想做的。我想在使用我的原型创建项目时检查最新版本,而不是每次构建时。
  • 能否请您更新您的原型 rpoject 的 pom.xml
  • 所以当您运行mvn 以从您的原型项目生成项目时,您仍然可以指定 LATEST,例如查看更新
  • -DarchetypeVersion=LATEST 不起作用,将始终解析为本地存储库的“最新”。大概是 0.0.1-SNAPSHOT
猜你喜欢
  • 2019-01-06
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2013-09-02
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多