我被告知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和我自己的源代码。我做错了什么?
答案 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程序集插件。