2016-04-20 6 views
0

Ich habe ein Java-Projekt, das an GitHub gebunden ist. Das Projekt besteht aus 3 Modulen. Ich habe das Jenkins Workflow Multibranch Pipeline Plugin konfiguriert, um die 3 Module zu erstellen.Maven-Build schlägt NUR bei Ausführung mit Jenkins fehl

node { 
    // Mark the code checkout 'stage'.... 
    // stage 'Checkout' 

    // Get some code from a GitHub repository 
    git url: '[email protected]:me/myproject.git', credentialsId: '###' 

    // Get the maven tool. 
    // ** NOTE: This 'M3' maven tool must be configured 
    // **  in the global configuration. 
    def mvnHome = tool 'M3' 

    stage 'Build module 1' 
    sh "${mvnHome}/bin/mvn -f module-1/ clean install" 

    stage 'Build module 2' 
    sh "${mvnHome}/bin/mvn -f module-2/ clean install" 

    stage 'Build module 3' 
    sh "${mvnHome}/bin/mvn -f module-3/ clean install" 
} 

Maven baut die ersten 2 Module ohne Probleme. Aber am dritten Modul bekomme ich folgende Fehlermeldung:

Compilation failure 
/var/lib/jenkins/workspace/.../MyClass.java:[136,44] cannot find symbol 
    symbol: method setStore(java.util.UUID,java.util.UUID,java.util.Date,int) 
    location: variable _storeService of type com.my.module3.interfaces.StoreService 

ich rot habe, dass es ein Problem mit der Version von maven-compiler-plugin sein kann, so dass ich es auf die neueste Version aktualisiert 3.5.1, aber es hat nicht geholfen. gibt es keine Fehler

<plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <finalName>module3-${project.version}</finalName> 
         <artifactSet> 
          <includes> 
           <include>*:*</include> 
          </includes> 
         </artifactSet> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <manifestEntries> 
            <Main-Class>com.my.module3.App</Main-Class> 
            <Implementation-Title>${project.name}</Implementation-Title> 
            <Implementation-Version>${project.version}</Implementation-Version> 
            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 
            <Implementation-Vendor>${project.organization.name}</Implementation-Vendor> 
           </manifestEntries> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 

Als ich das Modul in IntelliJ bauen:

Dies sind die Maven-Plugins, die ich in allen 3 der Module verwenden. Ich habe sogar das Repository in einen neuen Ordner gezogen und den Befehl mvn clean install für das Modul3 verwendet und es wird ohne Probleme beendet.

Ich habe keine Ahnung, wo das Problem liegt. Es scheint nicht, dass etwas mit meinem Code falsch ist, wie es richtig funktioniert (ich habe es debuggt). Jede Hilfe oder Vorschläge würde sehr geschätzt werden.

+0

Es scheint, die storeservice nicht die neueste Version ist. Weil Jenkin vor dem Aufbau den Quellcode auschecken muss. Sie sollten überprüfen: Der letzte Quellcode von Modul 3 wurde an Git übergeben? Wenn dies der Fall ist, können Sie zum Jenkins-Build-Ordner gehen und prüfen, ob die neueste Version des Modul 3-Quellcodes vorliegt. Wenn Sie auf Intelli .. bauen, war der Quellcode der neueste. So war der Build erfolgreich – NangSaigon

+0

Der Code ist die neueste Version. Ich löschte sogar die 'git'-Zeile, kopierte den Code aus meinem dev-Ordner und fügte ihn in den Jenkins-Arbeitsbereich-Ordner ein. Auch ich habe die Dateien überprüft. Der Code ist da. –

+1

Versuchen Sie den Ordner .m2 von Ihrem jenkins-Server zu entfernen. Auf diese Weise wird Jenkins den Download aller Ihrer Abhängigkeiten auslösen und Sie erhalten eine neue Version. Tatsächlich ist das Problem, auf das Sie gestoßen sind, ziemlich häufig. –

Antwort

1

Versuchen Sie, .m2-Ordner von Ihrem jenkins-Server zu entfernen. Auf diese Weise wird Jenkins den Download aller Ihrer Abhängigkeiten auslösen und Sie erhalten eine neue Version. Tatsächlich ist das Problem, auf das Sie gestoßen sind, ziemlich häufig.

+0

Nur noch eine Frage. Muss ich den .m2-Ordner vor jedem Build löschen? Es scheint ziemlich überflüssig. –

+0

Nein. Löschen Sie es einfach einmal, damit Sie neue Abhängigkeiten erhalten. Maven ist etwas schwierig, wenn Sie zum Beispiel Snapshot-Versionen haben, können Sie mit einer falschen Version Ihres Moduls enden, wenn Sie nicht vorsichtig sind. Wie @ João Marcos bereits erwähnt hat, behalte ich auch den Delete Workspace, bevor die Build-Option aktiviert ist. Zuerst müssen Sie "Workspace Cleanup Plugin" unter "jenkins verwalten -> Plugins verwalten" installieren. –

+0

Vielen Dank. Ich wusste nichts über das Plugin. Das Problem ist, dass ich das Workflow Multibranch Pipeline Plugin benutze und es scheint, dass es keine Delete Workspace Option dafür gibt. –

0

Sie können die Option "Arbeitsbereich vor Build starten" in der Konfiguration der Build-Umgebung auswählen.

Diese Option ist zugänglich nach der Installation „Workspace Cleanup Plugin“

+0

Wo befindet sich diese Einstellung? Ich habe die Einstellung "Alte Elemente verwerfen" aktiviert, aber ich finde die, über die Sie sprechen, nicht. –

+0

Öffnen Sie die Build-Konfiguration, machen Sie STRG + F und finden Sie es. Dies ist in "Build Environment" Optionen –

+1

Possibli nach der Installation dieser: https://wiki.jenkins-ci.org/display/JENKINS/Workspace+Cleanup+Plugin –