亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Maven:將 Scala 代碼和 Java 代碼一起構建到一個 Fat JAR 中

Maven:將 Scala 代碼和 Java 代碼一起構建到一個 Fat JAR 中

Go
慕桂英3389331 2022-12-28 09:48:31
我有一個構建到 Fat JAR 中的 Scala 項目。今天我需要向項目添加一些 Java 類,但現在我的 Maven 構建失敗了。我的項目結構(大致)如下所示:.├── src│   └── main│       ├── resources│       │   └── Log4j.properties|       ├── java│       │   └── com│       │       └── myorg│       │           └── myproject│       │               └── MyPublicJavaClass.java│       └── scala│           └── com│               └── myorg│                   └── myproject│                       └── spark│                           └── Main.scala└── pom.xml在我添加 Java 類之前,以及build-helper-maven-plugin今天,Maven 能夠毫無問題地構建這個項目。但是現在,似乎我沒有正確配置該插件,或者我沒有使用正確的插件?我的 Scala 代碼試圖使用類型的對象,MyPublicJavaClass所以現在我在 Maven 中看到的構建錯誤如下所示:[錯誤] ~/src/main/scala/com/myorg/myproject/spark/Main.scala:227: error: not found: type MyPublicJavaClass...[錯誤] 無法在項目 myproject 上執行目標 org.scala-tools:maven-scala-plugin:2.15.2:compile (default): wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (退出值: 1) -> [幫助 1]我以為它build-helper-maven-plugin會告訴它在編譯時之前將 Java 代碼的源目錄添加到要生成的源列表中,但顯然不是。我怎樣才能解決這個問題?
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

您正在為 Scala 編譯使用一個非常舊的插件(最新版本2.15.2已于 2011年 2 月 6 日發布)。


我建議您先升級到更新的插件,例如( 2019 年 5 月 11 日的scala-maven-plugin最新版本)。4.0.2


然后,您可以在文檔中找到混合 Scala/Java 源代碼的示例。在這種情況下不需要使用build-helper-maven-plugin,也不需要配置sourceDirectory和testSourceDirectory。用這個插件檢查這個簡單pom.xml的(當我在本地重現問題時,我剛剛從你提供的示例中刪除了未使用的依賴項):


<?xml version="1.0"?>

<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>

  <name>myproject</name>

  <url>http://maven.apache.org</url>


  <groupId>com.myorg</groupId>

  <artifactId>myproject</artifactId>

  <packaging>jar</packaging>

  <version>0.1.0-RELEASE</version>


  <properties>

    <maven.compiler.source>1.8</maven.compiler.source>

    <maven.compiler.target>1.8</maven.compiler.target>

    <encoding>UTF-8</encoding>

    <scala.tools.version>2.11</scala.tools.version>

    <scala.version>2.11.8</scala.version>

  </properties>


  <build>

    <plugins>

      <plugin>

        <groupId>net.alchim31.maven</groupId>

        <artifactId>scala-maven-plugin</artifactId>

        <version>4.0.2</version>

          <executions>

            <execution>

              <id>scala-compile-first</id>

              <phase>process-resources</phase>

              <goals>

                <goal>add-source</goal>

                <goal>compile</goal>

              </goals>

            </execution>

            <execution>

              <id>scala-test-compile</id>

              <phase>process-test-resources</phase>

              <goals>

                <goal>testCompile</goal>

              </goals>

          </execution>

        </executions>

      </plugin>


      <!-- This builds the fat JAR -->

      <plugin>

        <artifactId>maven-assembly-plugin</artifactId>

        <configuration>

          <archive>

            <manifest>

              <mainClass>com.myorg.myproject.spark.Main</mainClass>

            </manifest>

          </archive>

          <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>

    </plugins>

  </build>


  <dependencies>

    <dependency>

      <groupId>org.scala-lang</groupId>

      <artifactId>scala-library</artifactId>

      <version>${scala.version}</version>

      <scope>provided</scope>

    </dependency>

  </dependencies>

</project>



查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號