通過 Maven 編譯打包 Java + Scala 混合項目

      網友投稿 2269 2022-05-30

      1 - 問題描述

      1.1 背景說明

      項目中需要對 Java + Scala 編寫的 Maven 項目進行編譯打包,由于依賴了部分外部 jar 包,也就是部分 jar 包沒有在 pom.xml 中指定,導致編譯失敗。

      1.2 存在的問題

      網絡上能比較常見的打包 Scals 項目的方法,大多是引入了?org.scala-tools.maven-scala-plugin?插件(https://mvnrepository.com/artifact/org.scala-tools/maven-scala-plugin),其配置方式如下:

      ????org.scala-tools ????maven-scala-plugin ????2.15.2 ???? ????????modified-only ???? ???? ???????? ????????????main-scalac ????????????process-resources ???????????? ????????????????add-source ????????????????compile ???????????? ???????? ????

      該插件從2011年起就沒有更新過,官網地址也已失效,無法找到有效的支持文檔。

      2 - 問題解決

      2.1 方法一:通過scope=system引入外部依賴

      Maven 支持在 dependency 中引入系統依賴,其中?scope = system?與?scope = provided?的依賴范圍一致:只在編譯和測試范圍內有效,運行時范圍內無效。具體配置示例如下:

      ????com.shoufeng.bigdata ????spark-client ????system ????${project.basedir}/libs/spark-client.jar

      將所有的外部 jar 包都通過這種方式引入,即可正常編譯。但由于外部依賴包通常都會比較多,這種方式維護成本太高,所以不予考慮。

      2.2 方法二:通過新插件指定外部依賴

      經過搜索,找到了一款新插件:https://mvnrepository.com/artifact/net.alchim31.maven/scala-maven-plugin,pom.xml 中這樣配置:

      ????net.alchim31.maven ????scala-maven-plugin ????3.2.1 ???? ???????? ????????????scala-compile-first ????????????process-resources ???????????? ????????????????add-source ????????????????compile ???????????? ???????? ???????? ????????????scala-test-compile ????????????process-test-resources ???????????? ????????????????add-source ????????????????testCompile ???????????? ???????? ???? ???? ???????? ???????????? ????????????-extdirs ????????????${project.basedir}/libs ???????? ????????2.11.8 ????

      通過 Maven 編譯打包 Java + Scala 混合項目

      通過 -extdirs 參數,指定外部依賴的 jar 包。

      其他參數的查看:在終端窗口中,通過命令 mvn scala:help 查看主要配置項參數,例如:

      更詳細的使用說明,請參考:http://davidb.github.io/scala-maven-plugin/example_java.html

      編譯、打包用法:

      (1) 直接在 IDEA 的 Maven -> Project -> Lifecucle -> compile | package 進行編譯或打包;

      (2) 在終端窗口,通過如下命令進行編譯打包:

      mvn?clean?scala:compile?compile?package

      說明:在 compile 前加 scala:compile,這是該插件提供的選項,表示:先編譯 Scala,再編譯 Java,最后打包。

      Java Scala Maven

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Java中數值的加減乘除結果都是對的么?丨【奔跑吧!JAVA】
      下一篇:0x7OpenResty系列:Openresty最佳案例| 第7篇:模塊開發,OpenResty連接Redis
      相關文章
      亚洲妇女无套内射精| 亚洲av乱码一区二区三区按摩| 国产成人亚洲影院在线观看| 亚洲成a人无码亚洲成www牛牛 | 亚洲av永久无码嘿嘿嘿| 亚洲精品中文字幕乱码影院| 亚洲精品在线免费观看视频| 亚洲美女视频一区二区三区| 亚洲美女视频免费| 亚洲伊人久久大香线蕉影院| 亚洲an日韩专区在线| 亚洲色大成WWW亚洲女子| 亚洲日韩国产AV无码无码精品| 亚洲深深色噜噜狠狠网站| 亚洲精品第一国产综合野| 中文字幕亚洲情99在线| 亚洲精品乱码久久久久久蜜桃图片| 亚洲国产区男人本色| 女bbbbxxxx另类亚洲| 亚洲日韩涩涩成人午夜私人影院| 国产啪亚洲国产精品无码| 亚洲精品无码专区久久久| 久久夜色精品国产嚕嚕亚洲av| 亚洲精品在线观看视频| 亚洲日产2021三区在线| 亚洲av专区无码观看精品天堂| 亚洲欧美成人一区二区三区| 国产成人不卡亚洲精品91| 久久亚洲av无码精品浪潮| 人人狠狠综合久久亚洲婷婷| 亚洲伦另类中文字幕| 亚洲日韩在线视频| 亚洲欧美中文日韩视频| 亚洲日本一区二区一本一道 | 国产亚洲一区二区在线观看| 亚洲成a人片77777老司机| 亚洲精品亚洲人成在线观看麻豆| 国产日本亚洲一区二区三区| 国产精品国产亚洲区艳妇糸列短篇 | 麻豆亚洲AV成人无码久久精品 | 亚洲美国产亚洲AV|