2013-06-10 18 views
7

Hallo: Im Befund, der sich entfaltet standardmäßig maven den Dateinamen ändern die Version + Artefakt-ID übereinstimmen. Zum BeispielMaven: deploy Artefakt Dateinamen

eine JAR-Datei bereitstellen, mit Artefakt = A und version = V-0.1 wird in einem JAR-Datei namens AV-0.1.jar führen.

Gibt es eine Möglichkeit, den Standardnamen der JAR-Datei in der Bereitstellung zu ändern, sodass diese Feilds nicht verkettet werden oder der endgültige implementierte JAR-Name nicht explizit angegeben wird?

+0

Mögliche Duplikat [diese] (http : //stackoverflow.com/questions/4238944/controlling-maven-final-name-of-jar-artifact) Frage. – dmahapatro

Antwort

0

einfache Antwort darauf lautet: Nein

Das Problem dahinter ist, wenn Sie das Namensschema ändern wäre es nicht möglich sein wird, Artefakte in einem Repository zu finden. Das ist der Grund, ein festes Namensschema zu haben.

3

Complex Antwort auf diese Frage: Ja

Es ist ein bisschen schwierig ist, und Sie müssen vorsichtig sein, da die pom erhalten nicht neu geschrieben. Daher wird nur das entfernte Maven-Repository (Artefakt oder Nexus) es in die richtige Ordnerstruktur bringen.

Wenn Sie das deploy-Datei Ziel in dem Maven-deploy Ziel überschrieben werden sollen, können Sie die Parameter überschreiben: http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

Ein Beispiel, das immer Version 4.5.1 Nexus schreiben würde wie folgt aussehen:

 <plugin> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>deploy-file</goal> 
        </goals> 
        <phase>deploy</phase> 
        <configuration> 
         <repositoryId>nexus-site</repositoryId> 
         <url>http://nexus.some.where/nexus-2/content/repositories/releases</url> 
         <file>${build.directory}/${project.build.finalName}.${project.packaging}</file> 
         <generatePom>false</generatePom> 
         <pomFile>pom.xml</pomFile> 
         <version>4.5.1</version> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

(und bevor jemand fragt, ein Grund, etwas zu tun ist, Builds CI-freundlicher zu machen. In CI ist alles nur eine Build-Nummer, es gibt nicht wirklich eine "Build a release", jedes checkin ergibt eine Produktion Wenn Sie also 4.5.1 durch ${BUILD_NUMBER} ersetzen, werden Sie viele neue Versionen in sich haben r Artefakts storage ...)

+0

Danke! Ich habe das schon eine Weile gesucht! Das einzige Problem, das mir geblieben ist, ist, dass ich 'maven-shade-plugin' verwende. Jetzt stelle ich zwei Dateien auf meinem Zielsystem bereit: Das alte mit dem Zeitstempel und das neue, das von deiner Lösung da oben kommt ^^ – displayname

0

MVN implementieren: Bereitstellen-Datei -DartifactId = AAA -Dversion = VVV -Dpackaging =

Der Befehl oben jar wird die Datei in der folgenden Struktur platzieren.

AAA 
-VVV 
--AAA_VVV.jar 

Wenn Sie nur den Namen der erstellten Datei unterscheidet zwischen aufeinanderfolgenden Stösse zum artifactory machen möchten, können Sie -Dpackaging Parameter verwenden. dh. Setzen Sie den Wert auf dem aktuellen Zeitstempel

mvn deploy: deploy-Datei -DartifactId = AAA -Dversion = VVV -Dpackaging = 2017_01_31_01_37.jar

AAA 
-VVV 
--AAA_VVV.jar 
--AAA_VVV2017_01_31_01_37.jar 
Verwandte Themen