簡體   English   中英

Maven布局:如何確保src / main不依賴於src / test?

[英]Maven layout: How to be sure that src/main does not depend on src/test?

這必須非常基礎,但是我對Maven還是很陌生,但是我沒有找到此信息。

我有一個典型的Mavenized Java項目(我使用Eclipse),帶有一個主要工件( src/main/java mylib.jar > mylib.jar )和src/test/java的其他類(不僅是單元測試,還包括雜項代碼,樣本等,我不想包含在主jar中)。

我的問題是:如何確定項目的類工件中沒有循環依賴項? 具體來說,如何確定無意中的某個main類取決於某個test\\ 我擔心釋放損壞的mylib.arj的可能性。 Eclipse了解項目之間的依賴關系,但是這里我們只有一個項目。 有一些標准的方法嗎?

Maven實際上不會讓您這樣做。 當maven嘗試執行編譯目標時, src/test目錄結構中的所有內容都不在類路徑上。

例如,假設我不小心將以下代碼添加到我的HelloWorld程序中:

public void badDependency() {
    new HelloWorld_UT();
}

其中HelloWorld_UT只是一個標准的junit測試。

即使eclipse不會在我的項目中報告任何編譯錯誤,但是當我嘗試進行maven編譯時,我仍然遇到以下錯誤:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.297s
[INFO] Finished at: Sat May 10 23:08:29 CDT 2014
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project scratch: Compilation failure
[ERROR] /C:/eclipse/workspace/Scratch/src/main/java/org/drc/HelloWorld.java:[11,21] C:\eclipse\workspace\Scratch\src\main\java\org\drc\HelloWorld.java:11: cannot find symbol
[ERROR] symbol  : class HelloWorld_UT
[ERROR] location: class org.drc.HelloWorld

Maven在構建最終的jar時會自動排除測試中使用的源代碼。 但是,請記住,如果您的測試具有任何主要未使用的依賴項,請使用<scope> test </ scope>進行指示。

例如,如果JUnit是在測試中使用,你希望包括JUnit的主,對於依賴關系應該是這樣的pom.xml文件:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${dependency.junit.version}</version>
        <scope>test</scope>
    </dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM