Ich beschäftige mich derzeit mit einem Projekt, das Java und Scala (Spark) mischt. Und als ob das nicht genug wäre, importieren einige meiner Abhängigkeiten weitere Versionen von Funken und Scala (nicht retro-kompatibel) ...Was ist der Unterschied zwischen Maven-Compiler-Plugin und Scala-Maven-Plugin?
Um es zusammenzufassen, hier ist das, was meine Abhängigkeitsbaum aussehen könnte:
myProjectA
\_ myLibB
| \_ spark 1.5.2 (excluded in my pom.xml)
| \_ scala 2.10.4 (excluded in my pom.xml)
\_ spark 2.2.0 (with Scala 2.11)
| \_ scala 2.11.7
\_ scala 2.11.11
\_ java 8
Nach einer kleinen Änderung auf einer Karte in meinem Projekt funktioniert die Kompilierung nicht mehr ... Zu Ihrer Information: Die Änderung bestand darin, ein Element in eine fest codierte Karte einzufügen.
Daher suche ich nach einer Lösung, um mein Projekt zu kompilieren. Ich bin zur Zeit dieser Build-Konfiguration mit:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.1.3</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<args>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Ich erkennen, dass diese andere Konfiguration ganz gut, auch nach dem Wechsel zu funktionieren scheint, dass die vorherige Konfiguration Fehler gemacht (I ersetzt die scala-maven-plugin
mit den maven-compiler-plugin
):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
Zwei Fragen:
- Was ist der Unterschied zwischen maven-compiler-plugin
und scala-maven-plugin
?
- kann maven-compiler-plugin
effizient kompilieren Scala-Code/Java-Scala-Code gemischt?