2014-07-11 12 views
6

Ho creato un archetipo che ha una dipendenza gestita da uno dei miei progetti. C'è la possibilità di dire all'archetipo di usare sempre l'ultima versione di quella dipendenza ogni volta che viene creato un nuovo progetto con il mio archetipo? L'utilizzo di RELEASE non funziona per me, dal momento che non desidero modificare la versione ogni volta che il progetto viene creato.L'archetipo deve sempre utilizzare l'ultima versione della dipendenza

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

ho letto this domanda, ma la soluzione suggerita con il Maven-versioni-plugin sembra non essere adatto per due ragioni. Innanzitutto, voglio cambiare la versione quando creo il progetto e in secondo luogo non voglio modificare le versioni di tutte le dipendenze ma solo una.

Modifica: sopra è il pom.xml da archetype-resources (aggiornato), di seguito è il pom.xml dal mio archetype-progetto stesso.

<?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 e LATEST sembrano non funzionare affatto in dipendenze gestiti. Qualcuno può confermare o disabilitare quella dichiarazione?

+0

Anche se si vuole farlo per una sola dipendenza, si potrebbe voler riconsiderare perché potrebbe portato ad alcuni seri problemi perché delle modifiche di cui potresti non essere a conoscenza. Ma se vuoi farlo, puoi guardare questo link spiega molto bene la tua domanda. http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dipendency – SerhatCan

risposta

1

Si può mettere

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

LATEST risolverà l'ultima versione disponibile e passare -U quando si genera

o se non si desidera specificare -U ogni volta che è possibile configurare il settings.xml in ~/.m2 qualcosa come

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

quando si esegue th e mvn per generare progetto dal progetto archetipo è ancora possibile indicare ULTIMO, per esempio

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

Grazie per la risposta, ma non è quello che volevo fare. Vorrei verificare l'ultima versione, quando un progetto è ** creato ** con il mio archetipo, non ogni volta che viene creato. – Kayz

+0

potresti aggiornare il tuo pom.xml del tuo archetipo rpoject –

+0

per favore vedi la mia domanda aggiornata. – Kayz

Problemi correlati