使用不同的Scala版本生成两个相同Maven项目的jar

时间:2017-10-11 05:21:32

标签: scala maven maven-2 maven-3 maven-assembly-plugin

我正在使用Scala代码进行Maven项目,我想基于不同的Scala版本(2.10.6和2.11.8)生成两个jar。 如果有人请建议解决方案我如何在单个maven安装执行中实现这一点,或者如果在Maven中使用某些Maven插件有任何其他方法来实现这一点。

2 个答案:

答案 0 :(得分:1)

创建针对不同版本的Scala重写依赖关系的配置文件。您需要在两个配置文件上运行mvn install。有关详细信息,请参阅:different-dependencies-for-different-build-profiles-in-maven

此外,您还需要更改配置文件中的工件名称/版本,以区分这两者。

答案 1 :(得分:1)

我能够使用多次执行来解决这个问题。

<build>
  <plugins>
     <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
           <execution>
              <id>scala-version-2.10</id>
              <goals>
                 <goal>compile</goal>
                 <goal>testCompile</goal>
              </goals>
              <configuration>
                 <scalaVersion>2.10.6</scalaVersion>
                 <outputDir>${project.build.outputDirectory}/scala-2.10</outputDir>
              </configuration>
           </execution>
           <execution>
              <id>scala-version-2.11</id>
              <goals>
                 <goal>compile</goal>
                 <goal>testCompile</goal>
              </goals>
              <configuration>
                 <scalaVersion>2.11.8</scalaVersion>
                 <outputDir>${project.build.outputDirectory}/scala-2.11</outputDir>
              </configuration>
           </execution>
        </executions>
     </plugin>
     <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
           <execution>
              <id>scala-2.10</id>
              <goals>
                 <goal>jar</goal>
              </goals>
              <phase>package</phase>
              <configuration>
                 <classifier>scala-2.10</classifier>
                 <excludes>
                    <exclude>scala-2.11/**</exclude>
                    <exclude>sparkScala/**</exclude>
                    <exclude>sparksql/**</exclude>
                    <exclude>*.timestamp</exclude>
                 </excludes>
              </configuration>
           </execution>
           <execution>
              <id>scala-2.11</id>
              <goals>
                 <goal>jar</goal>
              </goals>
              <phase>package</phase>
              <configuration>
                 <classifier>scala-2.11</classifier>
                 <excludes>
                    <exclude>scala-2.10/**</exclude>
                    <exclude>sparkScala/**</exclude>
                    <exclude>sparksql/**</exclude>
                    <exclude>*.timestamp</exclude>
                 </excludes>
              </configuration>
           </execution>
        </executions>
     </plugin>
  </plugins>