2012-10-30 40 views
1

我有一個簡單的POM這樣的:Maven和依賴

<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/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 
<groupId>com.sim</groupId> 
<artifactId>log4j</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<parent> 
    <groupId>com.sim</groupId> 
    <artifactId>sim-java</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../sim-java/pom.xml</relativePath> 
</parent> 

<name>log4j</name> 

<dependencies> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
     <scope>compile</scope> 
    </dependency>  
</dependencies> 

我在這個項目上運行mvn clean package並如預期的那樣創建一個JAR。

當我導航到這個JAR中時,我想我會看到一個名爲log4j-1.2.17.jar的JAR,但事實並非如此。

在編譯範圍中使用依賴不包括JAR到打包版本的項目中?

感謝您澄清

回答

4

jar:jar插件的Maven的只是編譯源,並將其捆綁到一個罐子裏。就像用螞蟻或裸手建造一個罐子一樣,jar中不會包含任何依賴罐。 Jars不能在它們內部捆綁依賴jar,即使他們這樣做了,它們也不能被默認的類加載器加載。

如果您正在尋找建立一個EJB-JAR,那麼你可能要考慮一個EJB plugin

檢查this鏈接,您可以利用各種插件。

+0

謝謝你好像我有很多與java的lacunas ...所以,我會直接添加log4j內耳不在罐子裏面。 –

+0

Ouch。你說耳朵嗎?給EAR插件一看。 http://maven.apache.org/plugins/maven-ear-plugin/ –

+0

與往常一樣,如果你需要更多的控制像C中的makefile那樣,你可以回退Ant http://ant.apache.org/manual /Tasks/java.html,但maven被認爲是一種更清潔的方法。 –