如何正確地實現Java模組與inter-module Maven構建測試依賴關係
我有一個多模組使用Maven和Java專案。 我現在想遷移到Java 9/10/11和實現模組(如 JSR 376:Java平臺模組系統 )。 隨著專案已經由Maven模組,和依賴直,為專案建立模組描述符很直接。
現在每個Maven模組有自己的模組描述符(
module-info.java
),在
src/main/java
資料夾中。 沒有測試類的模組描述符。
然而,我偶然發現了我一直未能解決的問題,並沒有找到任何描述如何解決: 我怎麼能有inter-module嗎 測試 與Maven和Java模組依賴關係?
在我的例子中,我有一個“共同”Maven模組,它包含一些介面或抽象類(但沒有具體實現)。 在相同的Maven模組,我有 摘要 測試,以確保適當的行為的實現這些介面/抽象類。 然後,有一個或多個子模組,介面實現/抽象類和擴充套件的抽象測試。
然而,當試圖執行
test
階段的Maven構建子模組將失敗:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile (default-testCompile) on project my-impl-module: Compilation failure: Compilation failure:[ERROR] C:\projects\com.example\my-module-test\my-impl-module\src\test\java\com\example\impl\FooImplTest.java:[4,25] error: cannot find symbol[ERROR] symbol: class FooAbstractTest[ERROR] location: package com.example.common
我懷疑這是因為 測試不是模組的一部分 。 即使Maven做一些“魔法”測試的範圍內執行模組,它不會在我依賴的模組測試工作(由於某種原因)。 我怎麼解決這個問題?
專案的結構是這樣的:
├───my-common-module│ ├───pom.xml│ └───src│ ├───main│ │ └───java│ │ ├───com│ │ │ └───example│ │ │ └───common│ │ │ ├───AbstractFoo.java (abstract, implements Foo)│ │ │ └───Foo.java (interface)│ │ └───module-info.java (my.common.module: exports com.example.common)│ └───test│ └───java│ └───com│ └───example│ └───common│ └───FooAbstractTest.java (abstract class, tests Foo)├───my-impl-module│ ├───pom.xml│ └───src│ ├───main│ │ └───java│ │ ├───com│ │ │ └───example│ │ │ └───impl│ │ │ └───FooImpl.java (extends AbstractFoo)│ │ └───module-info.java (my.impl.module: requires my.common.module)│ └───test│ └───java│ └───com│ └───example│ └───impl│ └───FooImplTest.java (extends FooAbstractTest)└───pom.xml
的依賴關係
my-impl-module/pom.xml
如下:
<dependencies> <dependency> <groupId>com.example</groupId> <artifactId>my-common-module</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>my-common-module</artifactId> <classifier>tests</classifier> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency></dependencies>
注:以上是我建立的一個專案來證明這個問題。 我將試著更新完整專案的問題。 真正的專案是一個複雜多了 在這裡找到 ,但還沒有模組化的主分支。
PS:程式碼本身沒有什麼錯,一切使用正常的類路徑(即編譯並執行。 在IntelliJ)。 介紹了問題的模組。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559515/viewspace-2221677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Maven 依賴關係Maven
- Maven中如何管理多模組專案的依賴關係Maven
- maven中scope依賴範圍與classpath的關係Maven
- Spring框架模組依賴關係Spring框架
- depmod解決模組依賴關係
- 【Java】【專案構建】Idea中設定Gradle/Maven多模組依賴JavaIdeaGradleMaven
- ORACLE包和過程依賴關係測試(轉)Oracle
- 使用 .NET Core 實現依賴關係注入
- 關聯關係與依賴關係的區別
- Maven如何只打包專案某個模組及其依賴模組?Maven
- Java基礎:如何在IDEA中檢視依賴關係JavaIdea
- 微服務下 Spring Boot Maven 工程依賴關係管理微服務Spring BootMaven
- UML關係(泛化,實現,依賴,關聯(聚合,組合))
- build task依賴關係UI
- Maven 原始碼解析:依賴調解是如何實現的?Maven原始碼
- Elasticsearch依賴與Spring對應關係ElasticsearchSpring
- java的類之間的關係:泛化、依賴、關聯、實現、聚合、組合Java
- Maven最佳實踐:管理依賴Maven
- Java 如何正確地輸出日誌Java
- 20分鐘理清Maven構建中的測試相關工具的關係Maven
- 透過構建具有依賴關係的後端框架來學習 Nodejs後端框架NodeJS
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- mysql主外來鍵依賴關係MySql
- JUnit5依賴注入與測試介面依賴注入
- 如何正確實現 Java 中的 HashCodeJava
- Maven依賴管理:控制依賴的傳遞Maven
- Maven依賴範圍及依賴傳遞Maven
- Maven構建多模組工程Maven
- 如何快速又正確地在C++裡實現鎖C++
- Maven依賴機制Maven
- Maven工程依賴配置Maven
- WPF依賴屬性的正確學習方法
- 【python】【安裝包依賴關係】Python
- 解決rpm包依賴關係
- OSGI中的service依賴關係管理
- 如何管理前端專案中的複雜依賴關係前端
- 專案管理中,如何識別和管理依賴關係?專案管理
- 如何正確實現Java中的hashCode方法Java