# Jenkins - maven-jar-plugin - kein jar-file



## Hein_nieH (27. Dez 2020)

Moinsen,

es ist echt zum verzweifeln.
Ich mache mit jenkins meine ersten Gehversuche und möchte im Build process erreichen, dass auch ein Jar-Datei erzeugt wird.

Starte ich meine pom.xml direkt in Eclipse funktioniert das ganze auch.
Wenn ich jedoch der Build von jenkins ausgeführt werden soll, macht das maven-jar-plugin scheinbar gar nichts.

Beim Build in Jenkins wird auch nichts bemängelt (blauer Ball).
Hier meine pom.xml so wie ich sie in Jenkins verwende:


```
<project xmlns="[URL]http://maven.apache.org/POM/4.0.0[/URL]" xmlns:xsi="[URL]http://www.w3.org/2001/XMLSchema-instance[/URL]" xsi:schemaLocation="[URL]http://maven.apache.org/POM/4.0.0[/URL] [URL]http://maven.apache.org/xsd/maven-4.0.0.xsd[/URL]">
    <modelVersion>4.0.0</modelVersion>
      <groupId>Git-Test</groupId>
      <artifactId>Git-Test</artifactId>
      <version>0.0.1-SNAPSHOT</version>
     
      <name>Git-Test</name>
      <description>
          Test von Git und integration in jetkins
      </description>
      <organization>
          <name>ich</name>
      </organization>
     
      <properties>
            <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
          <project.reporting.outputEncoding>Cp1252</project.reporting.outputEncoding>
     
          <src>src</src>
          <target>target</target>
          <doc>doc</doc>
         
          <!-- Quellverzeichnis der Elemente -->
          <src.main>${src}/main</src.main>
          <src.test>${src}/test</src.test>
         
          <!-- Verzeichnis für generierte Elemente -->
          <target.main>${target}/main</target.main>
          <target.test>${target}/test</target.test>
         
          <!-- Jenkins Workspace -->
          <jenkins.local>C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins\.jenkins</jenkins.local>
          <jenkins.local.ws>${jenkins.local}\workspace</jenkins.local.ws>
         
          <!-- Jenkins Projekt Git-Test x-->
          <jenkins.project>Git-Test x</jenkins.project>
          <java.project>Git-Test</java.project>
      </properties>
     
      <!-- Anpassung des Standard-Build-Prozesses -->
      <build>
        <sourceDirectory>${src.main}</sourceDirectory>
        <testSourceDirectory>${src.test}</testSourceDirectory>
        <directory>${target}</directory> <!-- Basisverezichnis für generierte Dateien -->
       
        <outputDirectory>${target.main}</outputDirectory>
        <testOutputDirectory>${target.test}</testOutputDirectory>
       
        <resources>
              <resource>
                <directory>src</directory>
                <includes></includes>
                <excludes>
                      <exclude>**/*.java</exclude>
                </excludes>
              </resource>
        </resources>
       
       
        <!-- Anpassung des Build prozesses -->
        <plugins>
            <!-- Konfiguration des surefire-Plugins anpassen -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <testFailureIgnore>false</testFailureIgnore>
                    <formats>
                        <format>xml</format>
                        <format>html</format>
                    </formats>
                    <outputDirectory>${jenkins.local.ws}\${jenkins.project}\${java.project}\target\surefire-reports</outputDirectory>
                </configuration>
            </plugin>
               
            <!-- Konfiguration des maven-compiler-Plugins anpassen -->
              <plugin>
                  <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <!-- <release>11</release> -->
                    <!-- ab version 3.8.0 ist das Tag release möglich -->
                    <source>1.7</source>
                      <target>1.7</target>
                  </configuration>
            </plugin>
             
              <!-- Konfiguration des maven-jar-Plugins anpassen -->
            <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-jar-plugin</artifactId>
                  <version>3.2.0</version>
                  <configuration>
                      <!-- Verändert / Erweitert das default-Manifest -->
                      <archive>
                          <manifest>
                              <addClasspath>true</addClasspath>
                              <mainClass>main.MoinMoin</mainClass>
                          </manifest>
                      </archive>
                      <!--  Name der jar-Datei aendern -->
                      <finalName>GitTest_xxx_Test</finalName>
                     
                      <!--  Ausgabeort für jar-Datei aendern -->
                      <outputDirectory>${user.home}\Documents\Programmierung_Java\EXPORT</outputDirectory>
                 
                </configuration>
              </plugin>
             
              <!-- Konfiguration des cobertura-plugins anpassen -->
              <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <formats>
                        <format>xml</format>
                        <format>html</format>
                    </formats>
                    <!-- -->
                    <outputDirectory>${jenkins.local.ws}\${jenkins.project}\${java.project}\target\site\cobertura</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>cobertura</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
           
            <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-checkstyle-plugin</artifactId>
                   <version>3.1.1</version>
                   <configuration>
                     <configLocation>google_checks.xml</configLocation>
                     <encoding>UTF-8</encoding>
                     <consoleOutput>true</consoleOutput>
                     <failsOnError>true</failsOnError>
                     <linkXRef>false</linkXRef>
                   </configuration>
                   <executions>
                     <execution>
                           <id>validate</id>
                           <phase>package</phase>
                           <goals>
                             <goal>check</goal>
                           </goals>
                     </execution>
                   </executions>
             </plugin>
            
         </plugins>
      </build>
         
       
      <!-- Einbindung externer Bibliotheken --> 
    <dependencies>
          <!-- junit 4.12.0 nutzen, selbe version wie eclipse -->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
          </dependency>
      </dependencies>
   
</project>
```

Was müsste ich ändern?

Gruss Hein_nieH


----------



## mrBrown (27. Dez 2020)

Wo kommt diese pom her? Das ist die schlimmste pom die ich je gesehen hab, der Großteil davon sieht einfach völlig überflüssig und/oder falsch aus.


----------



## mrBrown (27. Dez 2020)

Hier ist eine Äquivalente pom zu deiner, mit zwei Änderungen: Jacoco statt Cobertura und Junit Jupiter (aka Junit 5) anstatt Junit 4 – beide, damit das ganze auch im nächsten Jahrzent noch funktioniert.
Außerdem Version von "1.7" auf "7" geändert, aus dem gleichen Grund (allerdings ist es nicht sehr sinnvoll, 7 zu nutzen).



```
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Git-Test</groupId>
    <artifactId>Git-Test</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>Git-Test</name>
    <description>
        Test von Git und integration in jetkins
    </description>
    <organization>
        <name>ich</name>
    </organization>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>7</java.version>
    </properties>

    <!-- Anpassung des Standard-Build-Prozesses -->
    <build>
        <!-- Anpassung des Build prozesses -->
        <plugins>
            <!-- Konfiguration des surefire-Plugins anpassen -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M1</version>
            </plugin>

            <!-- Konfiguration des maven-compiler-Plugins anpassen -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <release>${java.version}</release>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                    <debug>true</debug>
                    <debuglevel>lines,vars,source</debuglevel>
                    <parameters>true</parameters>
                </configuration>
            </plugin>

            <!-- Konfiguration des maven-jar-Plugins anpassen -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <!-- Verändert / Erweitert das default-Manifest -->
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>main.MoinMoin</mainClass>
                        </manifest>
                    </archive>
                    <!-- Name der jar-Datei aendern -->
                    <finalName>GitTest_xxx_Test</finalName>
                </configuration>
            </plugin>

            <!-- Konfiguration des jacoco-plugins anpassen -->
            <!-- Ersatz für Cobertura, da wir 2020 und nicht mehr 2010 haben -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.5</version>
                <configuration>
                    <append>false</append>
                </configuration>
                <executions>
                    <execution>
                        <id>pre-unit-test</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-unit-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <configLocation>google_checks.xml</configLocation>
                    <encoding>UTF-8</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>
                    <linkXRef>false</linkXRef>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>package</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>


    <!-- Einbindung externer Bibliotheken -->
    <dependencies>
        <!-- junit jupiter statt junit 4, wie oben: wir haben 2020, nicht 2010... -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
```


----------



## Hein_nieH (28. Dez 2020)

Moinsen,

vielen Dank für die Zuarbeit.
Mal abgesehen, ob wir nun 2010 oder 2020 haben: Es geht mir bei meinen ersten Gehversuchen primär darum das grundsätzliche Prinzip von
Jenkins zu erfassen. Da ist es mir nicht so wichtig, ob ich nun die neusten plugiins verwende oder nicht.

Die zugesandte pom.xml habe ich getestet. Ich kann sie auch fehlerfrei anwenden.
Das Grundproblem bleibt: Ich erhalte keine jar-Datei. 
Ich erhalte nur eine jar-Datei wenn ich  Mein Maven-Projekt direkt in Eclipse oder als Kommandzeile ausführe.

Wenn ich jedoch den Build via Jenkins erzeuge wird keine Jar erzeugt oder ich kann sie nicht finden.
Scheinbar muss es an einer Einstellung in Jenkins liegen. Ich habe mir auch die Yuotube-Beiträge zu diesem Thema angesehen.
Leider habe ich nichts gefunden was bei mir anders konfiguriert ist.

Vielleicht habe ich auch einen Denkfehler.
Nach meiner Auffassung müssten bei einem Build via Jenkins im Jenkins-Workspace unter dem Projektfolder im target-Verzeichnis alle erzeugte Ergebnisse, wie z.B. Testergebnisse u.a. abgelegt werden.
Es werden derzeit aber nur die von Git im master-brunch befindlichen Dateien des Projektes angezeigt.
Mit anderen Worten egal wie ich meine pom.xml ändere ich erhalte im Jenkis-workspace keine im Build-Process generierte Datei.
Daher vermute ich, dass es eine Konfigurationsfrage in Jenkins ist.

Gruss Hein_nieH


----------



## mrBrown (28. Dez 2020)

Hein_nieH hat gesagt.:


> Mal abgesehen, ob wir nun 2010 oder 2020 haben: Es geht mir bei meinen ersten Gehversuchen primär darum das grundsätzliche Prinzip von
> Jenkins zu erfassen. Da ist es mir nicht so wichtig, ob ich nun die neusten plugiins verwende oder nicht.


Das ist vergleichbar mit Autofahren lernen auf nem Ford Modell T - klappt sicherlich irgenwie, glücklich wirst du aber nicht damit werden 

Die sehr veralteten Plugins und die noch ältere Java-Version ist auch nur ein neben-Problem, viel relevanter ist der völlig kaputt konfigurierte Build.



Hein_nieH hat gesagt.:


> Wenn ich jedoch den Build via Jenkins erzeuge wird keine Jar erzeugt oder ich kann sie nicht finden.


Wenn die Config, die du im anderen Thread gezeigt hast, noch aktuell ist: Du führst ganz explizit nur `cobertura:cobertura` aus, dabei wird keine Jar-Datei generiert.
Das Goal sollte besser einfach nur `clean verify` sein (oder besser: nur `verify`, und bei der Repository-Config angeben, das jedes Mal neu geklont wird, verhindert zusätzlich ein paar Fehler).


----------



## Hein_nieH (28. Dez 2020)

Hallo,

ich habe das geänderte pom.xml verwendet. Auch habe ich als Goal "clean verify" bzw "verify" verwendet.



> und bei der Repository-Config angeben, das jedes Mal neu geklont wird, verhindert zusätzlich ein paar Fehler).


Wo würde ich diese Einstellung finden?
BeiAdditional Behaviours finde ich nichts oder wäre das nicht das richtige Quelle für die Einstellungen.
Tut mir leid, dass ich so blöde fragen muss, aber ich habe keine verständliche Doku für meine Jenkins-version (2.249.3)

Gruss Hein_nieH


----------



## mrBrown (28. Dez 2020)

Hein_nieH hat gesagt.:


> BeiAdditional Behaviours finde ich nichts oder wäre das nicht das richtige Quelle für die Einstellungen.


Doch, unter Additional Behaviours, "Wipe out repository & force clone"


----------



## Hein_nieH (28. Dez 2020)

Hallo,

danke für die Antwort. Ich habe "Wipe out repository & force clone" inzugefügt (dachte das heisst nur "clone"  )

Im Workspace wird kein target-Folder erzeugt, siehe Anhang. Liegt das daran, dass ich noch keine Datei eingecheckt aus diesem Folder in Git habe?

Aber der Tipp mit "Wipe out repository & force clone" hat etwas gebracht. Immerhin ist jetzt im Git-target-Folder die Jar-Datei sichtbar 

Das nächste Problem wäre wie ich jetzt im Jenkins-Workspace (so wie im git Repository) ein target-Folder erzeuge.
Das ist wohl die Vorraussetzung, um die Ergebnisse vom Buildprozess, wie Testergebnisse, Testabdeckung und Checkstyle sichtbar zu machen.

An dieser stelle schon einem vielen Dank für die erhaltene Hilfe.

Gruss Hein_neiH


----------



## mrBrown (28. Dez 2020)

Hein_nieH hat gesagt.:


> Liegt das daran, dass ich noch keine Datei eingecheckt aus diesem Folder in Git habe?


Aus dem Ordner solltest du in keinem Fall eine Datei einchecken.



Zeig mal die Konsolen-Ausgabe des Builds im Jenkins.
Nutzt du noch deine pom? Falls ja, probier es mit der von mir geposteten pom. Der Cobertura-Report wird dann zwar nicht mehr genereiert, dafür ein Jacoco-Report, aber darum kann man sich später kümmern.


----------



## Hein_nieH (28. Dez 2020)

Moinsen,

die Post-Build-Aktion mit dem  Cobertura-Report ist noch eine Altlast.
Ich habe die von dir erzeugte pom.xml verwendet.
Aus dem target-Folder habe ich nichts eingecheckt

Anbei die Konsolenausgabe des Build, welcher erfolgreich durchgelaufen ist.
Gruss Hein_nieH



```
Gestartet durch Benutzer ichselbst
Running as SYSTEM
Baue in Arbeitsbereich C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Git-Test x
The recommended git tool is: NONE
No credentials specified
Wiping out workspace first.
Cloning the remote Git repository
Cloning repository C:\Users\E7470\Documents\GitRepository
> C:\Program Files (x86)\Git\bin\git.exe init C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Git-Test x # timeout=10
Fetching upstream changes from C:\Users\E7470\Documents\GitRepository
> C:\Program Files (x86)\Git\bin\git.exe --version # timeout=10
> git --version # 'git version 2.29.2.windows.2'
> C:\Program Files (x86)\Git\bin\git.exe fetch --tags --force --progress -- C:\Users\E7470\Documents\GitRepository +refs/heads/*:refs/remotes/origin/* # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe config remote.origin.url C:\Users\E7470\Documents\GitRepository # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
> C:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision 7ac82eb0befba7c5da303d19438249240bc2abda (refs/remotes/origin/master)
> C:\Program Files (x86)\Git\bin\git.exe config core.sparsecheckout # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe checkout -f 7ac82eb0befba7c5da303d19438249240bc2abda # timeout=10
Commit message: "Änderung 28.12.2020"
First time build. Skipping changelog.
[Git-Test x] $ cmd.exe /C "mvn -f C:\Users\E7470\Documents\GitRepository\Git-Test\pom_Jenkins_2.xml verify && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------< Git-Test:Git-Test >--------------------------
[INFO] Building Git-Test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.5:prepare-agent (pre-unit-test) @ Git-Test ---
[INFO] argLine set to -javaagent:C:\\Windows\\system32\\config\\systemprofile\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.5\\org.jacoco.agent-0.8.5-runtime.jar=destfile=C:\\Users\\E7470\\Documents\\GitRepository\\Git-Test\\target\\jacoco.exec,append=false
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Git-Test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\E7470\Documents\GitRepository\Git-Test\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ Git-Test ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Git-Test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\E7470\Documents\GitRepository\Git-Test\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ Git-Test ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:3.0.0-M1:test (default-test) @ Git-Test ---
[INFO] No tests to run.
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.5:report (post-unit-test) @ Git-Test ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ Git-Test ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: C:\Users\E7470\Documents\GitRepository\Git-Test\target\GitTest_xxx_Test.jar
[INFO]
[INFO] --- maven-checkstyle-plugin:3.1.1:check (validate) @ Git-Test ---
[INFO] Beginne PrÃ¼fung...
PrÃ¼fung beendet.
[INFO] You have 0 Checkstyle violations.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.227 s
[INFO] Finished at: 2020-12-28T15:38:27+01:00
[INFO] ------------------------------------------------------------------------
Publishing Coverage report....
No reports were found
Finished: SUCCESS
```


----------



## thecain (28. Dez 2020)

Schaue ich falsch oder ist da gar kein Code?


----------



## mrBrown (28. Dez 2020)

Irgendwas ist da immer noch sehr falsch konfiguriert, der Build läuft nicht im Workspace, sondern in deinem Original-Repo ab


----------



## Hein_nieH (28. Dez 2020)

Hallo,

die Vermutung habe ich auch, nur sind meine Ideen erschöpft wo ich da noch eine Konfigurationsmöglichkeit habe.
Daher habe ich mein Einstellungen mitgepostet.
Gruss Hein_nieH


----------



## LimDul (28. Dez 2020)

Wie hast du dem Jenkins gesagt, welche POM er verwenden soll? Weil er nimmt ja die pom_Jenkins_2.xml?


----------



## LimDul (28. Dez 2020)

Evtl. wäre es sinnvoll zum spielen, den Jenkins nicht lokal auf dem gleichen Rechner zu betreiben sondern auf einem "anderen".  Am einfachsten bietet sich da Docker an: https://www.jenkins.io/doc/book/installing/docker/

Dann kann man so Schweinereien, dass Jenkins in den lokalen Workspace reingreift aus technischer Sicht gar nicht machen.


----------



## Hein_nieH (28. Dez 2020)

Hallo,

ich habe mit beiden pom.xml experimentiert.
. pom_Jenkins.xml ist meine ursprüngliche Datei (bemängelt durch den User mrBrown)
- pom_Jenkins_2.xml ist die vom MrBrown geänderte Datei.

Das Grundproblem ist das der build nicht im Jenkins-Workspace ausgeführt wird.
Im Anhang habe ich ein paar Screenshots zu den Installationsverzeichnissen herangehängt.

Im Installationspfad habe ich die Datei jenkins.xml abgeändert, damit sie auch auf das Verzeichnis
"C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins" zeigt.
War halt ein Versuch der auch nichts gebracht hat. ☹️

Gruss Hein_nieH


----------



## mrBrown (28. Dez 2020)

Was ich an deiner Stelle machen würde: Das Projekt löschen, Jenkins-Home löschen, alle Umgebungsvariablen, die irgendwas mit Jenkins zu tun haben löschen – und dann ganz von vorn anfangen.

Also:

Maven, Java, git installieren – hast du alles schon, solltest nur sichergehen, das am besten Java 11 installiert ist.
Neues git-Repo erstellen
Neuen Ordner erstellen
Darin `git init`

Projekt in dem Repo erstellen
von mir oben gepostete pom in das Repo kopieren
`src/main/java/main/MoinMoin.java` erstellen und mit unten stehendem Code füllen
mit `git add .` die beiden Dateien hnizufügen (und nur die beiden Dateien!), dann mit `git commit` commiten
mit `mvn verify` den Build testen, sollte erfolgreich durchlaufen

Jenkins installieren
neuste Version runterladen (Weekly ist okay)
Über Kommandozeile starten, KEINE Umgebungsvariablen oä setzen)
Im Browser öffnen (localhost:8080), Passwort eingeben
"suggested Plugins" installieren lassen
Nutzer anlegen
Jenkins verwalten -> Plugins installieren -> "Maven Integration" raussuchen und installieren lassen (ohne Neustart)
Jenkins verwalten -> Konfiguration der Hilfsprogramme -> Maven-Installation hinzufügen

Neuen Job anlegen
Namen eingeben, Maven Projekt auswählen
Unter "Source-Code-Management" git auswählen und den Pfad zu deinem Repo aus Schritt 2 angeben, "Wipe out repository & force clone" als "Additional Behaviour" wählen
Unter "Build" als Goal "verify" angeben
Speichern

Build starten


```
package main;

public class MoinMoin {
  public static void main(String... args) {
    System.out.println("MoinMoin");
  }
}
```


----------



## Hein_nieH (28. Dez 2020)

Hallo,

hier noch die Dateien jenkins.xml (befindet sich im Installationsverzeichnis) und config.xml (befindet sich im Verzeichnis .jenkins)

 Vielleicht kann man hier den Fehler erkennen  

Gruss Hein_nieH


----------



## Hein_nieH (28. Dez 2020)

Hallo,

ich glaube (Glauben liegt ja im religiösen Bereich) das es wohl das Beste sein wird.
Trotzdem würde es mich interessieren was hier (möglicherweise) falsch konfiguriert ist, da das Problem je immer wieder auftreten kann.

Gruss Hein_nieH


----------



## mrBrown (28. Dez 2020)

Hein_nieH hat gesagt.:


> Trotzdem würde es mich interessieren was hier (möglicherweise) falsch konfiguriert ist, da das Problem je immer wieder auftreten kann.


Naja, irgendwo hast du irgendwas falsch gemacht. Fehlerquellen gibts viele, vorallem wenn das Vorgehen hauptsächlich aus "einfach rumprobieren" besteht.

So wie deine pom aussah, will ich nicht wissen, was du sonst noch probiert hast, ich hab da vemutlich die nächsten Wochne noch Albträume von  Wie kamst du überhaupt darauf, die so zu verändern?

Ich würde übringens nicht davon ausgehen, dass das Problem jemals wieder auftritt – ich hab sowas bisher in ~4 Jahren und hunderten betreuten Jobs noch kein Mal gesehen. Man sollte halt nur nicht wild rumprobieren und so ein paatr Grundregeln beachten - zB immer nur zum Projekt relative Pfade in der pom


----------



## Hein_nieH (28. Dez 2020)

... ok ich setzte das ganze Projekt neu auf.
Java 11 habe ich je schon installiert


----------



## LimDul (28. Dez 2020)

Hein_nieH hat gesagt.:


> Hallo,
> 
> ich habe mit beiden pom.xml experimentiert.
> . pom_Jenkins.xml ist meine ursprüngliche Datei (bemängelt durch den User mrBrown)
> - pom_Jenkins_2.xml ist die vom MrBrown geänderte Datei.


Neu anfangen halte ich auch für richtig.

Aber irgendwo musst du im Jenkins Job ja die pom_Jenkins_2.xml hinterlegt haben. Und ich vermute fast, dass du da den absoluten Pfad angeben hast...

Absolute Pfade haben weder in einem Jenkins Job, noch in einer pom etwas zu suchen. Das widerpricht dem Sinn und Zweck dieser Zweck dieser Dateien.


----------



## Hein_nieH (28. Dez 2020)

Hallo,

Bingo     
Das war die Ursache für meine langes Gesuche.

Nachdem ich jetzt das ganze Projekt neu aufgesetzt hatte (was wohl gar nicht nötig war)  und den Pfad zur pom.xml relativ vom Repo aus gesetzt habe FUNKTIONIRT es .

Gemessen an der verplemperten Zeit für das Experimentieren habe ich hier viel Lehrgeld gezahlt.
Ich habe von MrBrom die pom.xml verwendet und nun ist alles  in Butter.

*Noch einmal Danke an beide für die Hilfe.*

 Gruss Hein_nieH


----------



## Hein_nieH (29. Dez 2020)

Hallo,

ein (hoffentlich) kleines Problem habe ich noch.
Weder das plugin jacoco noch das plugin cobertura erzeugen eine Reportdatei.
Beide plugins müssten im target-verzeichnis ein subfolder "*site*" anlegen.
Ich habe das  plugin jacoco nachinstalliert und mich dazu etwas belesen.
Wo wären da die Stellschrauben? Ich habe die pom vom User MrBrown verwendet.

Gruss Hein_nieH


----------



## LimDul (29. Dez 2020)

Der ordner Site wird vom maven Site Plugin erstellt. Den brauchst du aber für jacoco nicht. Wenn ich mvn test ausführe, hab ich danach im target Ordner eine jacoco.exec liegen. Die sollte Jenkins reichen. (Bzw. in neueren Versionen ist eine xml, die da liegt)

Der Report ist dafür da, wenn du dir das direkt im Browser ansehen willst ohne Jenkins und Co.


----------



## mrBrown (29. Dez 2020)

Hein_nieH hat gesagt.:


> Weder das plugin jacoco noch das plugin cobertura erzeugen eine Reportdatei.
> Beide plugins müssten im target-verzeichnis ein subfolder "*site*" anlegen.


Mit obiger pom (und existierenden Tests) wird target/site/jacoco/jacoco.xml erzeugt


----------



## Hein_nieH (29. Dez 2020)

Hallo,

danke für die Info.
Scheinbar liegt es dann daran, dass meine Test-Casesnicht erkannt werden.
Ich werde mal etwas herumexperimentieren.

Gruss Hein_nieH


----------



## mrBrown (29. Dez 2020)

Die sollten auf „Test“ enden und die Methoden sollten jeweils mit `@Test` annotiert sein – viel beachten muss man da eigentlich nicht


----------



## LimDul (29. Dez 2020)

Poste mal eine Testklasse.


----------



## Hein_nieH (29. Dez 2020)

Hallo,

ich bin ein Stück weiter gekommen allerdings ohne logisches Verständnis.

wenn ich in der configuration "goals and options"  _cobertura:coberutra_ definiere, dann wird auch die coverage Datei im folder /target/site/cobertura erzeugt.
Gebe ich _cobertura:coberutra _nicht ein, dann wird auch keine coverage-Datei, geschweige denn ein site-folder erzeugt.

Ich habe das so verstanden: wenn das artifact cobertura-maven-plugin in der pom.xml angegeben ist und configuriert wird, dann sollte
das cobertura plugin auch die coverage.xml erzeugen.
Gebe ich das artifact in der pom nicht an aber definiere das goal in der Komandozeile bzw im Feld "goals and options" dann sollte es ebenfalls erzeugt werden. Liege ich da richtig? 
Vielleicht habe ich den abschnitt in der Doku nicht richtig verstanden. Was ist denn sonst gemeine mit  _enable "cobertura" analysis in your 'pom.xml' files _
Vielleicht kann mir jemand das besser erklären ....

Anbei noch ein sinnfreier Test für meine Experimente..

Gruss Hein_nieH



> package test;
> 
> import static org.junit.Assert.*;
> 
> ...


----------



## LimDul (29. Dez 2020)

Ich würde jacocco anstelle cobertura verwenden. Das ist deutlich aktueller und auch Standard.


----------



## mrBrown (29. Dez 2020)

Ich kann mich nur wiederholen: lass Cobetura weg, das klappt aktuell bei dir sowieso nur, weil du eine super veraltete Java-Version nutzt...
Es ist schön, dass du die Grundlagen lernen willst, aber Grundlagen lernen, die man danach direkt wieder vergessen kann, ist eher sinnlos.


Jacoco ist passend konfiguriert, da wird alles nötige beim Test generiert. Keine Ahnung, wie man das bei Cobertura machen muss, man muss sicher noch angeben, dass das cobertura-Goal beim normalen Build ausgeführt wird.


----------



## Hein_nieH (29. Dez 2020)

Ich habe es zuvor auch mit Jacoco versucht.
Mir ist nur nicht klar was ich im Feld "goals and options" als goal eingeben soll.
Daher der Rueckschwenk auf cobertura.
Sonst hätte ich Jacoco schon längst benutzt.
Mir ist auch noch nicht klar warum in bei "goals and options" nochmals ein goal (für cobertura oder Jacoco) definieren muss, obwohl es im pom schon definiert ist. Ohne einen Eintrag wird ja keine Reportdatei angelegt.
Werde mal weiter experimentieren. Bloß gut das ich jetzt ein paar freie Tage habe.
Gruss Hein_nieH


----------



## LimDul (29. Dez 2020)

Bei Jacoco geht das automatisch, wenn die Tests ausgeführt werden.


----------



## mrBrown (29. Dez 2020)

Hein_nieH hat gesagt.:


> Mir ist nur nicht klar was ich im Feld "goals and options" als goal eingeben soll.


`verify`




Hein_nieH hat gesagt.:


> Mir ist auch noch nicht klar warum in bei "goals and options" nochmals ein goal (für cobertura oder Jacoco) definieren muss, obwohl es im pom schon definiert ist.


Die goals musst du entweder manuell aufrufen, oder in der pom an Phasen binden – letzteres ist für Jacoco gemacht, deshalb wird das automatisch ausgeführt, für Cobertura war das nicht gemacht, deshalb musstest du das per Hand ausführen.


----------



## Hein_nieH (30. Dez 2020)

Hallo,

endlich gibt es (rechtzeitig vor dem Jahreswechsel) eine gute Nachricht.
Alles läuft jetzt perfekt (auch Jacoco)  
Ursache war wohl mein unzureichendes Verständnis von Git.
Nachdem ich die pom.xml in Git commitet (eingecheckt) habe wird genau das durchgeführt was in der pom.xml steht.
Noch einmal danke für die Unterstützung.
Letzte Frage: gibt es eine Möglichkeit die Ergebnisse vom checkstyle-plugin graphisch darzustellen. 
Ich erhalte die Ergebnisse nur via Konsolenausgabe 
Wenn ja, wie würde ich die graphische Ausgabe dann einbinden?
Gruss Hein_nieH


----------



## Hein_nieH (30. Dez 2020)

Hallo,

nun benötige ich doch noch einmal etwas "Nachhilfeunterricht".
In Jenkins finde ich die die plugins "checkstyle" und "findbugs" nicht.
Ich habe unter "Jenkins" -> "Plugins verwalten" -- Tab "Verfügbar" und Tab "Installiert" beide plugins nicht gefunden.
Im Jenkinsverzeichnis sind beide plugins im plugins-folder nicht verfügbar.
Wie kann ich diese plugins in Jenkins installieren?
Bei den in google gefundenen Beiträgen wird immer davon ausgegangen, dass diese plugins existieren.

Kann mir jemad helfen?
Gruss Hein_nieH


----------



## mrBrown (30. Dez 2020)

Die wurden durch das „Warnungs Next Generation“-Plugin ersetzt.


----------



## Hein_nieH (30. Dez 2020)

Hallo,

danke für die Info.
Die Installation von "Warnings Next Generation" hat prima geklappt und es funktioniert *supppi*.
Ich denke dass ich nun alles in Jenkins beisammen habe was ich zum build benötige.
War zwar ein langer weg aber dümmer ist man dabei ja auch nicht geworden  
Nun kann ich mich endlich wieder dem Programmieren zuwenden.  

Gruss Hein_nieH


----------

