1

我有一个像这样的简单 POM:

<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

1 回答 1

4

maven的jar:jar插件只是编译你的源代码并将其捆绑到一个 jar 中。就像用 ant 或徒手构建 jar 一样,jar 中不会捆绑任何依赖 jar。jar 不能在其中捆绑依赖的 jar,即使有,它们也不能被默认的类加载器加载。

如果您正在寻找构建一个 ejb-jar,那么您可能需要考虑一个EJB 插件

检查链接以获取您可以利用的各种插件。

于 2012-10-30T22:51:23.350 回答