2012-10-30 39 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被认为是一种更清洁的方法。 –