The archetype should always use the latest version of the dependency

I created an archetype that has a controlled dependency on one of my projects. Is it possible to tell the archetype to always use the latest version of this dependency when a new project is created with my archetype? Using RELEASE does not work for me, since I do not want to change the version every time the project is built.

  <?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> 

I read this question, but the proposed solution with the maven version plugin does not seem to be suitable for two reasons. Firstly, I want to change the version when creating the project, and secondly, I do not want to change the versions of all the dependencies, but only one.

Edit: above pom.xml from archetypal resources (updated), below pom.xml from my archetype project itself.

 <?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: RELEASE and LATEST don't seem to work at all in managed dependencies at all. Can someone confirm or deny this statement?

+6
source share
1 answer

You can put

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

LATEST will allow the latest available version and pass -U when creating

or if you don't want to specify -U every time you can configure settings.xml in ~/.m2 something like

 <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> 

when you run mvn to generate a project from your archetype project, you can still specify LATEST, for example

 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 
+1
source

Source: https://habr.com/ru/post/972087/


All Articles