mvn安装不安装/嵌入依赖项

时间:2013-06-25 10:58:26

标签: eclipse maven pom.xml

我被告知install目标应该意味着我生成的jar文件将包含部署中包含的所有必需依赖项。但是,这对我来说似乎没有用。

这是我的pom.xml:

<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>org.zone.commandit</groupId>
    <artifactId>CommandIt</artifactId>
    <version>0.2</version>
    <name>CommandIt</name>
    <repositories>
        <repository>
            <id>bukkit-repo</id>
            <url>http://repo.bukkit.org/content/groups/public</url>
        </repository>
        <repository>
            <id>milkbowl-repo</id>
            <url>http://ci.herocraftonline.com/plugin/repository/everything/</url>
        </repository>
    </repositories>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.bukkit</groupId>
            <artifactId>bukkit</artifactId>
            <version>1.5.2-R1.0</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>net.milkbowl.vault</groupId>
            <artifactId>Vault</artifactId>
            <version>1.2.26-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>se.krka.kahlua</groupId>
            <artifactId>kahlua-cldc11</artifactId>
            <version>5.1_2.1.0</version>
        </dependency>
        <dependency>
            <groupId>se.krka.kahlua</groupId>
            <artifactId>kahlua-core</artifactId>
            <version>5.1_2.1.0</version>
        </dependency>
        <dependency>
            <groupId>se.krka.kahlua</groupId>
            <artifactId>kahlua-interpreter</artifactId>
            <version>5.1_2.1.0</version>
        </dependency>
        <dependency>
            <groupId>se.krka.kahlua</groupId>
            <artifactId>kahlua-j2se</artifactId>
            <version>5.1_2.1.0</version>
        </dependency>
    </dependencies>
</project>

由此,我期望一个带有commons-io和kahlua库(安装在本地存储库中)的CommandIt-0.2.jar文件。 bukkit和Vault依赖项应该包含在运行时环境中。

但是,在使用7zip检查项目jar文件时,我只找到了META-INF和我自己的源代码。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您可以使用Maven Assembly插件生成包含所有依赖项的JAR。

build > plugins部分添加以下内容:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

运行此插件的Maven目标是assembly:single

答案 1 :(得分:0)

Maven依赖项被下载到本地maven存储库,它通常位于用户主目录中的.m2目录中。包装JAR在结果中不包含任何其他JAR。如果要创建Web应用程序,请使用打包WAR(或EAR)。在WAR文件中有你的JARs inc。包括所有依赖项。

答案 2 :(得分:0)

mvn install执行插件,只需将构建的任何工件(在本例中为带有代码的JAR文件)放入本地存储库(通常位于〜/ .m2 / repository)。

如果要组装要分发的内容,例如包含JAR和shell脚本的tarball,请查看Maven assembly plugin。如果要组装包含代码和依赖项中代码的单个JAR文件,可以使用jar-with-dependencies描述符运行Maven程序集插件。