2012-06-25 6 views
1

Je suis nouveau à Maven, et j'essaie de déployer mon projet comme une guerre, et comme un pot. J'aimerais diviser le projet pour faire la même chose, mais c'est trop grand pour que je puisse le faire dans un délai raisonnable.maven-deploy-plugin Ignore le numéro de version?

J'ai trouvé maven deploy additional jar file, ce qui m'a suggéré d'ajouter quelques plugins.

L'installation plug-in fonctionne très bien

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>${project.groupId}</groupId> 
       <version>SNAPSHOT</version> 
       <file> 
        ${project.build.directory}/${project.artifactId}-SNAPSHOT.jar 
       </file> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Voici la sortie:

[INFO] [install:install-file {execution: default}] 
[INFO] Installing C:\Server\example\code\server\my-project\target\my-project-SNAPSHOT.jar to C:\Users\Kyle\.m2\repository\com\example\main-project\my-project\SNAPSHOT\my-project-SNAPSHOT.jar 

Le problème est avec le maven-plugin-déploiement. Il semble ignorer la version snapshot Je forçais à utiliser:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <generatePom>true</generatePom> 
       <url>${project.distributionManagement.snapshotRepository.url}</url> 
       <artifactId>${project.artifactId}</artifactId> 
       <groupId>${project.groupId}</groupId> 
       <version>SNAPSHOT</version> 
       <!--${project.version}!="SNAPSHOT" for some reason--> 
       <file>${project.build.directory}/${project.artifactId}-SNAPSHOT.jar</file> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

semble utiliser un autre numéro de version (YYYYMMDD.HHmmSS- n)

[INFO] [deploy:deploy-file {execution: default}] 
[INFO] Retrieving previous build number from remote-repository 
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar 
42993K uploaded (my-project-20120625.161551-2.jar) 

Qu'est-ce que je fais mal?

+0

Peut-être que je me méprends sur ce que vous aimez? – khmarbaise

+0

Je voudrais déployer comme une guerre ET comme un pot: Deux artefacts d'un pom. –

+0

Ce n'est pas une réponse, car une archive de guerre a une intention particulière alors qu'un pot en a un autre. Une guerre sera déployée dans une chose comme Tomcat mais un pot qui ne sera pas déployé dans un tomcat seul. Donc, cette approche n'a pas de sens. – khmarbaise

Répondre

1

Une chose que je Mémorable est que vous utilisez la version INSTANTANÉ sans aucune sorte de nombres précédents comme:

1.0.0-SNAPSHOT 

ou tout au moins:

1-SNAPSHOT 

Vous utilisez juste INSTANTANÉ cette does not make sense, cause de de quelle ligne de développement vous parlez dans ce cas.

L'autre chose est qu'un SNAPSHOT (en supposant que vous l'utilisez dans le bon sens) dans Maven est un artefact où un horodatage sera mis à la place du SNAPSHOT. C'est la façon de rendre possible la publication de plusieurs SNAPSHOT mais de les rendre distincts.

Donc, la chose que vous avez montré votre sortie est exactement ce que Maven fait de la INSTANTANÉ:

[INFO] [deploy:deploy-file {execution: default}] 
[INFO] Retrieving previous build number from remote-repository 
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar 
42993K uploaded (my-project-20120625.161551-2.jar) 
0

Dans le dépôt distant respectif il y a une http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/maven-metadata.xml. Si vous y jetez un coup d'oeil, vous verrez que l'horodatage le plus récent est mappé à votre SNAPSHOT respectif. C'est un comportement typique sous Maven 2 et 3. Je crois que c'est le comportement par défaut sous Maven 3 pour utiliser timestamped SNAPSHOT -s. Lorsque vous essayez de télécharger l'artefact via Maven, je crois qu'il le résoudra correctement pour vous, donc vous ne devriez pas vraiment être alarmé. Pourquoi voudriez-vous déployer une guerre en tant que bocal?

Questions connexes