Архетип всегда должен использовать последнюю версию зависимости

Я создал архетип, который имеет управляемую зависимость от одного из моих проектов. Есть ли возможность указать архетипу всегда использовать последнюю версию этой зависимости всякий раз, когда создается новый проект с моим архетипом? Использование 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>

Я прочитал этот вопрос, но предлагаемое решение с плагином maven-versions не кажется быть подходящим по двум причинам. Во-первых, я хочу изменить версию при создании проекта, а во-вторых, я не хочу изменять версии всех зависимостей, а только одну.

Изменить: выше - 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>

РЕДАКТИРОВАТЬ2: RELEASE и LATEST, похоже, вообще не работают в управляемых зависимостях. Может ли кто-нибудь подтвердить или опровергнуть это утверждение?


person Kayz    schedule 11.07.2014    source источник
comment
Даже если вы хотите сделать это только для одной зависимости, вы можете пересмотреть это, потому что это может привести к серьезным проблемам из-за изменений, о которых вы могли не знать. Но все же, если вы хотите это сделать, вы можете посмотреть эту ссылку, она очень хорошо объясняет ваш вопрос. stackoverflow.com/questions/30571/   -  person SerhatCan    schedule 14.07.2014


Ответы (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 для создания проекта из вашего архетипа, вы все равно можете указать 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
person jmj    schedule 14.07.2014
comment
Спасибо за ответ, но я не хотел этого делать. Я хотел бы проверять последнюю версию, когда проект создается с моим архетипом, а не каждый раз, когда он создается. - person Kayz; 16.07.2014
comment
не могли бы вы обновить свой pom.xml вашего архетипа rpoject - person jmj; 16.07.2014
comment
поэтому, когда вы запускаете mvn для создания проекта из вашего проекта архетипа, вы все равно можете указать ПОСЛЕДНИЙ, например, см. обновление - person jmj; 21.07.2014