2012-02-20 15 views
9

Ho i seguenti plug-in per la creazione di uno -sources.jar e la distribuzione di uno specifico jar denominato in un repository.Come distribuire il file di origine con il jar utilizzando deploy: deploy-file

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>attach-sources</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <version>${project.version}-r${buildNumber}</version> 
     <classifier>${env}</classifier> 
     <packaging>jar</packaging> 
     <file>${project.build.directory}/${project.build.finalName}.jar</file> 
     <url>${artifactory.url}/libs-release-local</url> 
     <repositoryId>artifactory.digiterre.com</repositoryId> 
     <pomFile>${project.basedir}/pom.xml</pomFile> 
    </configuration> 
</plugin> 

desidero distribuire il *-sources.jar allo stesso tempo. Ho provato ad aggiungere una seconda voce di file e anche un secondo plug-in di distribuzione. Mi sembra di ottenere uno o l'altro file distribuito.

È possibile distribuire entrambi in un passaggio utilizzando deploy:deploy-file o sarà necessario impostare una seconda città di team building solo per distribuire le origini?

+0

Duplicato di http://stackoverflow.com/questions/4725668/how-to-deploy-snapshot-with-sources -e-javadoc? –

+0

Ho visto quel post e ho provato i suggerimenti. Né funzionano come sto distribuendo un file con un classificatore specifico. Anche jar-no-fork non funziona Maven genera un errore. – Yoztastic

+0

È un po 'sporco, ma forse usa un task Ant da Maven che esegue una distribuzione dalla riga di comando? –

risposta

7

Quando si utilizza maven-source-plugin, il vaso generato attribuirà automaticamente per proiettare artefatto (impostazione predefinita per this parametro è 'vero') e se si esegue deploy verrà distribuito con esso. Ahimè, non c'è bisogno di una configurazione separata del plugin di distribuzione.

Sfortunatamente, non è possibile aggiungere il classificatore (${env} nel tuo caso) al vaso delle fonti. È per questo che mi piacerebbe utilizzare la seguente configurazione:

... 
<artifactId>com.pie.mash.repo.mince-${env}</artifactId> 
<version>1.18-r${buildNumber}</version> 
... 
<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.1.2</version> 
     <executions> 
     <execution> 
      <goals> 
      <goal>jar-no-fork</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Inoltre, ho trovato this domanda su SO. Puoi usare la soluzione suggerita qui.

+0

utilizzando la versione 2.1.2 esplicitamente non genera l'errore che stavo ottenendo in precedenza. – Yoztastic

+0

Tuttavia, i sorgenti non vengono ancora distribuiti utilizzando questo esempio. – Yoztastic

+0

@Yoztastic Dovresti invocare 'mvn clean deploy'. E, come ho già detto, non è necessario configurare separatamente il plug-in di distribuzione. –

1

mvn deploy:deploy-file distribuisce solo un singolo artefatto. Invece è possibile utilizzare mvn deploy (che invoca mvn deploy:deploy) per distribuire l'artefatto, il suo pom insieme alle risorse associate (come sorgente e javadoc). Fare riferimento alla panoramica degli obiettivi di maven deploy plugin.

+0

Sto usando deploy: deploy-file url = http: //repo.xxx.xxx.com/content/repositories/peroo-snapshots/ repositoryId = peroo-snapshots groupId = com.xxx.ist.curo.testtalentClient artifactId = pet_client_osx versione = $ {} CLIENT_VERSIONCITEST 0,0-SNAPSHOT confezione = catrame classificatore = Rev _ $ {} SVN_REVISION file = $ Postazione di lavoro// uscita/Talent.app.tar –

+0

variabile/CWave3 TalentOSX/build CLIENT_VERSIONCITEST ambiente dovrebbe cambia ogni volta, ma non funziona su jenkins. –

1

Possiamo usare deploy: deploy-file per caricare più JAR (sorgenti, test, documenti) sul lato principale artefatto JAR. Abbiamo solo bisogno di fornire quell'ulteriore informazione per la distribuzione: chiamata del file di rilascio. Le aggiunte sono indicate in grassetto nella seguente comando:

mvn implementare: distribuire file -Dfile = helloWorld.jar -Durl = https://localhost/nexus/content/repositories/snapshots/ -DrepositoryId = un'istantanea -Dfiles = helloWorld-6.4.1.3.SNAPSHOT-sources. vaso, helloWorld-6.4.1.3.SNAPSHOT-tests.jar-Dtypes = vaso, vaso-Dclassifiers = fonti, test -DgroupId = com -DartifactId = helloWorld -Dversion = 6.4.1.3.SNAPSHOT -Dpackaging = vaso -Dpomfile = pom.xml

Abbiamo bisogno di specificare l'elenco dei file separati da virgole Abbiamo bisogno di specificare i tipi di questi file aggiuntivi Abbiamo bisogno di aggiungere informazioni sul classificatore per quei file aggiuntivi

+0

si prega di formattare correttamente la risposta. Per ulteriori dettagli, si prega di controllare [risposta] – ItamarG3

Problemi correlati