2017-11-25 18 views
1

Ich habe ein Projekt mit mehreren Scala-Spark-Programme, während ich mvn install durch Eclipse laufen kann ich das richtige Glas erzeugt, wasMaven Build mit Jenkins für Scala Funken Programm: "Kein primäres Artefakt zu installieren, installieren angefügte Artefakte stattdessen

Nachdem wir den Code zu GIT geschoben haben, versuchen wir, ihn mit jenkins zu erstellen, da wir die JAR-Datei mit Hilfe von Ansible automatisch auf unseren Hadoop-Cluster pushen wollen Wir haben jenkinsfile mit bauen Ziele als „kompilieren Paket -X installieren“.

Die Protokolle zeigen, dass-

sah ich den Fehler in der ähnlichen Position -

Maven: No primary artifact to install, installing attached artifacts instead

Aber hier ist die Antwort sagt - Entfernen Auto sauber, ich bin nicht sicher, wie zu stoppen, dass während jenkins der JAR-Datei aufbaut.

Unten finden Sie die pom.xml-

  <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/maven-v4_0_0.xsd"> 
       <modelVersion>4.0.0</modelVersion> 
       <groupId>com.esi.rxhome</groupId> 
       <artifactId>PROJECT1</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 
       <packaging>jar</packaging> 
       <name>${project.artifactId}</name> 
       <description>RxHomePreprocessing</description> 
       <inceptionYear>2015</inceptionYear> 
       <licenses> 
        <license> 
         <name>My License</name> 
         <url>http://....</url> 
         <distribution>repo</distribution> 
        </license> 
       </licenses> 

       <properties> 
        <maven.compiler.source>1.8</maven.compiler.source> 
        <maven.compiler.target>1.8</maven.compiler.target> 
        <encoding>UTF-8</encoding> 
        <scala.version>2.10.6</scala.version> 
        <scala.compat.version>2.10</scala.compat.version> 
       </properties> 

       <dependencies> 
        <dependency> 
         <groupId>org.scala-lang</groupId> 
         <artifactId>scala-library</artifactId> 
         <version>${scala.version}</version> 
        </dependency> 

        <!-- Test --> 
        <dependency> 
         <groupId>junit</groupId> 
         <artifactId>junit</artifactId> 
         <version>4.11</version> 
         <scope>test</scope> 
        </dependency> 
        <dependency> 
         <groupId>org.specs2</groupId> 
         <artifactId>specs2-core_${scala.compat.version}</artifactId> 
         <version>2.4.16</version> 
         <scope>test</scope> 
        </dependency> 
        <dependency> 
         <groupId>org.scalatest</groupId> 
         <artifactId>scalatest_${scala.compat.version}</artifactId> 
         <version>2.2.4</version> 
         <scope>test</scope> 
        </dependency> 
        <dependency> 
         <groupId>org.apache.hive</groupId> 
         <artifactId>hive-jdbc</artifactId> 
         <version>1.2.1000.2.6.0.3-8</version> 
        </dependency> 


        <!-- <dependency> 
       <groupId>org.apache.spark</groupId> 
       <artifactId>spark-core_2.10</artifactId> 
       <version>2.1.0</version> 
      </dependency> 

        <dependency> 
       <groupId>org.apache.spark</groupId> 
       <artifactId>spark-sql_2.10</artifactId> 
       <version>2.1.0</version> 
      </dependency> --> 


        <dependency> 
         <groupId>org.apache.spark</groupId> 
         <artifactId>spark-core_2.10</artifactId> 
         <version>1.6.3</version> 
        </dependency> 
        <dependency> 
         <groupId>org.apache.spark</groupId> 
         <artifactId>spark-sql_2.10</artifactId> 
         <version>1.6.3</version> 
        </dependency> 
        <dependency> 
         <groupId>org.apache.spark</groupId> 
         <artifactId>spark-hive_2.10</artifactId> 
         <version>1.6.3</version> 
        </dependency> 

        <dependency> 
         <groupId>com.databricks</groupId> 
         <artifactId>spark-csv_2.10</artifactId> 
         <version>1.5.0</version> 
        </dependency> 

       </dependencies> 

       <build> 
        <sourceDirectory>src/main/scala</sourceDirectory> 
        <testSourceDirectory>src/test/scala</testSourceDirectory> 
        <plugins> 
         <plugin> 
          <!-- see http://davidb.github.com/scala-maven-plugin --> 
          <groupId>net.alchim31.maven</groupId> 
          <artifactId>scala-maven-plugin</artifactId> 
          <version>3.2.0</version> 
          <executions> 
           <execution> 
            <goals> 
             <goal>compile</goal> 
             <goal>testCompile</goal> 
            </goals> 
            <configuration> 
             <args> 
              <arg>-make:transitive</arg> 
              <arg>-dependencyfile</arg> 
              <arg>${project.build.directory}/.scala_dependencies</arg> 
             </args> 
            </configuration> 
           </execution> 
          </executions> 
         </plugin> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-surefire-plugin</artifactId> 
          <version>2.18.1</version> 
          <configuration> 
           <useFile>false</useFile> 
           <disableXmlReport>true</disableXmlReport> 
           <!-- If you have classpath issue like NoDefClassError,... --> 
           <!-- useManifestOnlyJar>false</useManifestOnlyJar --> 
           <includes> 
            <include>**/*Test.*</include> 
            <include>**/*Suite.*</include> 
           </includes> 
          </configuration> 
         </plugin> 
         <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-jar-plugin</artifactId> 
              <version>2.4</version> 
              <configuration> 
               <skipIfEmpty>true</skipIfEmpty> 
               </configuration> 
            <executions> 
            <execution> 
           <goals> 
           <goal>jar</goal> 
         </goals> 
         </execution> 
         </executions> 
         </plugin> 

         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-assembly-plugin</artifactId> 
          <version>3.0.0</version> 
          <configuration> 
           <descriptorRefs> 
            <descriptorRef>jar-with-dependencies</descriptorRef> 
           </descriptorRefs> 
           <archive> 
            <manifest> 
            <mainClass>com.esi.spark.storedprocedure.Test_jdbc_nospark</mainClass> 
            </manifest> 
           </archive> 
          </configuration> 
          <executions> 
           <execution> 
           <id>make-assembly</id> 
           <phase>package</phase> 
           <goals> 
            <goal>single</goal> 
           </goals> 
           </execution> 
          </executions> 
         </plugin> 

         <plugin> 
          <artifactId>maven-clean-plugin</artifactId> 
          <version>3.0.0</version> 
          <configuration> 
          <skip>true</skip> 
          </configuration> 
         </plugin> 

        </plugins> 
       </build> 
      </project> 

Ich Angabe versucht

1 - "jar" für die Verpackung in pom.xml.

2 -Ändern die Maven-Ziele -

"install"

"clean install"

"kompilieren Paket installieren"

Aber vor Versuchen half auch nicht von der loszuwerden Die Nachricht und das erzeugte Glas nützten nichts.

Wenn ich versuche, den Funken zur Ausführung einreichen command-

  spark-submit --driver-java-options -Djava.io.tmpdir=/home/EH2524/tmp --conf spark.local.dir=/home/EH2524/tmp --driver-memory 2G --executor-memory 2G --total-executor-cores 1 --num-executors 10 --executor-cores 10 --class com.esi.spark.storedprocedure.Test_jdbc_nospark --master yarn /home/EH2524/PROJECT1-0.0.1-20171124.213717-1-jar-with-dependencies.jar 
      Multiple versions of Spark are installed but SPARK_MAJOR_VERSION is not set 
      Spark1 will be picked by default 
      java.lang.ClassNotFoundException: com.esi.spark.storedprocedure.Test_jdbc_nospark 
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
        at java.lang.Class.forName0(Native Method) 
        at java.lang.Class.forName(Class.java:348) 
        at org.apache.spark.util.Utils$.classForName(Utils.scala:175) 
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:703) 
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

Hier Test_jdbc_nospark ist ein scala-Objekt.

Antwort

0

Diese Nachricht war wegen des maven-jar-plugin mit dem so wahr. Sobald ich diese entfernt wird, wird die Build die Nachricht nicht geben „Kein primären Artefakt zu installieren, angebracht Artefakte Installation statt“

Das leere Glas wegen falschen Pfades in pom.xml erstellt wurde immer

Intitally-

<build> 
     <sourceDirectory>src/main/scala</sourceDirectory> 

Wie Jenkins durch Code in Git und durch die Pom innerhalb des Projektordners baute.

<build> 
    <sourceDirectory>folder_name_in_git/src/main/scala</sourceDirectory> 
0

Ich bin mir nicht sicher, aber Ihre maven-jar-plugin Konfiguration sieht verdächtig aus. Normalerweise würde die Durchführung einer Phase angeben, wie in

<execution> 
    <phase>package</phase> 
    <goals> 
     <goal>jar</goal> 
    </goals> 

(von this example). Vielleicht lässt sich dadurch Ihr Standard-Jar nicht erstellen? Sicherlich klingt die Fehlermeldung so, als würde Ihr Standard-Krug nicht erstellt, aber Sie haben es nicht wirklich gesagt.

+0

Diese Nachricht war wegen der maven-jar-plugin des als wahr hat. Sobald ich dies entfernt habe, gibt der Build nicht die Nachricht "Kein primäres Artefakt zu installieren, stattdessen angefügte Artefakte installieren" Aber ein weiteres Problem hier ist, dass das Glas (primäre Artefakt) erstellt nicht die erforderlichen Scala-Objekte, also ich bin Das Scala-Funke-Programm kann nicht ausgeführt werden. Das Glas, das erstellt wird, ist von der Größe 3kb nur, auch nur, um mehr Informationen auszugeben, wenn ich maven installiere, bin in der Finsternis das Glas, das geschaffen wird, korrekt und ich bin in der Lage, das scala Funkenprogramm laufen zu lassen. – Jim

+0

Wenn ich weiter eingrabe, sehe ich, dass Jenkins die Nachricht druckt, Keine Quelle zum Kompilieren, die zur Erstellung eines leeren Krugs führt. ? ('[INFO] --- maven-compiler-plugin: 3.1: kompilieren (Standard-kompilieren) @ PROJECT1 --- [INFO] Keine Quellen zu kompilieren?) Versuchen zu sehen, warum es nicht in der Lage ist zu bekommen die zu kompilierenden Quellen. @Joe – Jim

+0

Kann nicht auf der Eclipse Front helfen (ich benutze IntelliJ), aber es klingt wie Ihr Eclipse-Projekt irgendwie nicht die Standard-Konfiguration von Maven verwendet. –

Verwandte Themen