2016-06-08 4 views
3

My Frühlings-Boot-Projekt Beschreibung hat bauen:Frühlings-Boot-Steuerziel JAR-Datei Name

<build> 

    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <dependencies> 
       <dependency> 
        <groupId>org.apache.maven.surefire</groupId> 
        <artifactId>surefire-junit47</artifactId> 
        <version>2.18.1</version> 
       </dependency> 
      </dependencies> 
     </plugin> 

     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <version>${spring-boot.version}</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>com.app.MainClass</mainClass> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

ich meine JAR-Datei benennen möge app-1.0-SNAPSHOT.jar in einem Zweig und 1.0-RELEASE.jar in einer anderen, kontrolliert von Jenkins sein (mit einer Art von MVN-Einstellungen oder JVM-Argument wie -D ..

Kann ich das tun?

+0

in Ihrem zweiten Zweig würde die 'pom.xml' bereits' version' als '1.0-RELEASE' haben? Wenn das der Fall wäre, dann würde alles schon out-of-the-box funktionieren, aber die Frage ist: Wie gehst du mit Releases und Branching um? Verwenden Sie 'maven-release-plugin'? Welche Versionssteuerung verwenden Sie und welche Verzweigungsstrategie (d. h. git, gitflow)? –

+0

Ich sehe keine speziellen Einstellungen in den Spring-Boot-Eltern. Daher wird der Jar-Name von build.finalName abgeleitet: $ {project.artifactId} - $ {project.version}. Sie könnten das Hinzufügen einer Zweigeigenschaft neu konfigurieren – wemu

Antwort

7

so einfach, In einem Zweig, Sie pom.xml haben mit

<build> 
    <finalName>app-1.0-SNAPSHOT</finalName> 
</build> 


In anderen Zweig haben Sie pom.xml mit

<build> 
    <finalName>1.0-RELEASE</finalName> 
</build> 
1

Sie können die Version des Projekts zu Ihren Build Namen wie diese propagieren:

Projekt
<build> 
    <finalName>app-${project.version}</finalName> 
</build> 

oder die Version Ihrer Eltern Wenn Sie einen haben:

<build> 
    <finalName>app-${parent.version}</finalName> 
</build> 

Dann Sie wo Verfolgen Sie lieber die Projektversion als den Build-Namen.

Allerdings, beachten Sie, dass die Verwaltung der Build-Version in SCM mit Zweigen ist ein Schmerz im Hals und fehleranfällig. Es wird empfohlen, dass Ihr Code-Repository unabhängig von Ihrer Build-Version ist.

Eine mögliche Alternative wäre die Verwendung eines Release-Management-Tools wie maven release plugin oder noch einfacher maven version.

Beispiel:

Hier werde ich geben und Beispiel maven verion verwenden.

Angenommen, Sie verwenden SCM-Tool (es könnte git sein) und eine Build Factory (wie Jenkins oder ein anderes Tool). Angenommen, Sie haben eine Aufgabe zum Erstellen und Bereitstellen von Snapshots und eine weitere für Freigaben.

Im Snapshot Job, können Sie eine Pre-Build-Task mit der folgenden Maven Ziel Aufstellmaße:

versions:set -DnewVersion=app-1.0-SNAPSHOT 

und die folgenden in der Release Job:

versions:set -DnewVersion=app-1.0-RELEASE 

Jetzt ist das OK, weil Sie es nur lokal machen und nie die Build-Version in Ihrem Code verwalten müssen.

Jetzt, können Sie Ihre (Release-) Version markieren, nachdem Sie maven version angewendet haben und erfolgreich bauen (hoffentlich einschließlich Einheit, Integration und Funktionstests). Auf diese Weise können Sie genau den Code verfolgen, der für jedes Release bereitgestellt wurde.

Tipp !! Platz ist Geld! Tun Sie sich selbst einen Gefallen: Reinigen Sie regelmäßig Ihr Snapshot-Repository. Es sollte nicht zu schwierig sein, einen Job zu erstellen, der ab und zu abläuft.