2013-12-18 101 views
1

我有點驚訝:我在maven pom中聲明瞭一個依賴關係作爲運行時,它仍然包含在戰爭中。 老實說,我希望它不會做到這一點... 我使用JUnit的只是爲了演示的目的... :) 例如:包含在戰爭中的運行時依賴關係

 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>runtime</scope> 
    </dependency> 
    </dependencies> 
 

感謝, Roxana的

+1

你能告訴我們你的POM嗎? –

+0

完成:) - 我編輯我的帖子 – Roxana

回答

2

一些Maven的範圍:

  • 如果需要在生產的依賴,有如果只爲(單位 - )測試需要的依賴要與應用程序使用範圍runtime
  • 一起交付,不應該交付使用範圍test
  • 如果需要在生產的依賴,但已經是容器的一部分(例如Tomcat中,JBOSS)使用範圍provided
+0

如上所述提供將確保依賴項不包含在war文件中。如果你想把依賴關係放到特定的位置。使用maven-copy-dependencies插件 – stallion

1

如果你想要的東西在運行時,它必須在包中。否則,軟件會在哪裏知道在哪裏找到它。

你在期待什麼?最重要的是,你爲什麼在運行時包含JUnit?它應該在測試範圍內。

+0

我期望運行時更像是提供... – Roxana

+1

@Roxana爲什麼?提供意味着它由您的工件以外的東西提供。運行時意味着它在運行時是必需的,但不是由其他任何東西提供的。 –

+0

(junit嚴格來說是爲了展示一些東西......) – Roxana