2017-06-27 3 views
0

Anforderung: Laden Sie eine zusätzliche Datei (eine Textformat-Versionshinweisdatei) zusammen mit jar/war zu nexus hoch.Maven deploy "Release Note" als Artefakt

Mögliche Lösung: Verwenden Sie maven deploy plugin wie folgt:

 <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>RELEASENOTE.MD</packaging> 
         <generatePom>false</generatePom> 
         <url>${project.distributionManagement.repository.url}</url> 
         <artifactId>${project.artifactId}</artifactId> 
         <groupId>${project.groupId}</groupId> 
         <version>${project.version}</version> 
         <file>RELEASENOTE.MD</file> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Probleme:

  1. Datei ist optional. Die Datei sollte nur bereitgestellt werden, wenn sie vorhanden ist. Die obige Lösung gibt einen Fehler aus, wenn die Datei nicht vorhanden ist.

[ERROR] Fehler Ziel org.apache.maven.plugins auszuführen: Maven-deploy-Plugin: 2,4: deploy-Datei (Standard) auf Projekt ... \ RELEASENOTE.MD nicht gefunden .

  1. eine Option benötigen Dateinamen von regex (Beispiel: *RELEASENOTE.MD) angeben. maven deploy plugin akzeptiert Regex nicht.

[ERROR] Fehler Ziel org.apache.maven.plugins auszuführen: Maven-deploy-Plugin: 2,4: deploy-Datei (Standard) auf Projekt ... * RELEASENOTE.MD nicht gefunden .

Wie können diese beiden Probleme umgangen werden?

+0

Warum nicht einfach in Ihrer Versionskontrolle in diesen Artefakt Überprüfung durch einen Wrapper-Shell-Build-Skript umgegangen werden?oder hinzufügen während des Builds über Build-Helper-Maven-Plugin? – khmarbaise

+0

Ja, es wird in die Versionskontrolle eingecheckt. Aber es ist optional. Nicht alle Gläser haben eine Release-Note. Daher sollte das Plugin nicht versuchen, die Datei bereitzustellen, wenn sie nicht vorhanden ist. – gammay

+0

Als die entsprechenden Projekte, die das Jar erstellen, sollten die Versionshinweise an das Projekt und nicht das Deploy-Plugin angehängt werden. BTW: Warum sollten die Release Notes in das Repository und nicht auf eine generierte Site gestellt werden? – khmarbaise

Antwort

1

die Eingänge von @SpaceTrucker und @khmarbaise Kombination kam mit folgenden Lösung:

<profiles> 
    <profile> 
     <id>add-release-note</id> 
     <activation> 
      <file><exists>RELEASENOTE.MD</exists></file> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>build-helper-maven-plugin</artifactId> 
        <version>3.0.0</version> 
        <executions> 
         <execution> 
          <id>attach-artifacts</id> 
          <phase>package</phase> 
          <goals> 
           <goal>attach-artifact</goal> 
          </goals> 
          <configuration> 
           <artifacts> 
            <artifact> 
             <file>RELEASENOTE.MD</file> 
             <type>MD</type> 
             <classifier>RELEASENOTE</classifier> 
            </artifact> 
           </artifacts> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

bearbeiten

  • maven-deploy-plugin innerhalb Profilaktivierung auch funktioniert. Aufgrund seiner <url>-Markierung ist es jedoch schwierig, eine Release/Snapshot-Build-Parametrisierung zu erstellen. build-helper-maven-plugin ist ein einfacherer Lösung

  • Dateiname regex kann

1

Verschieben Sie die Bereitstellung der Versionshinweise in ihr eigenes Mavenprofil und aktivieren Sie dieses Profil nur, wenn die Versionshinweisdatei vorhanden ist.

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <exists>RELEASENOTE.MD</exists> 
     </file> 
    </activation> 
    <!-- deployment of release notes declarations here --> 
    </profile> 
</profiles> 

Weitere Informationen finden Sie unter Introduction to Build Profiles.

In Bezug auf die Regex-Anforderung sollten Sie eine Benennungsrichtlinie für die Versionshinweise einrichten und diese als Variable implementieren, auf die der Maven-Build zugreifen kann. Die build helper maven plugin könnte dort nützlich sein.

Verwandte Themen