2013-06-25 112 views
0

我被告知install目标应该表示我的结果jar文件将具有所有必需的依赖包括在部署中。但是,这似乎不适合我。mvn安装不安装/嵌入依赖关系

这里是我的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> 

由此,我期待着与公共-IO和甘露库(这是安装在本地存储库)一个CommandIt-0.2.jar文件。在运行时环境中提供的bukkit和Vault依赖项应该包括而不是

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

+0

你使用什么软件包? WAR,JAR? – maqjav

+0

包是JAR。 – CJxD

+0

你在找什么文件? Maven的依赖关系被下载到本地的maven仓库中,它通常是你的用户主目录中的.m2目录。打包JAR不在结果中包含任何其他JAR。如果要制作Web应用程序,请使用打包WAR(或EAR)。在WAR文件中有您的JAR公司。包括所有依赖项。 –

回答

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

0

Maven依赖关系被下载到本地maven仓库中,它通常是您的用户主目录中的.m2目录。打包JAR不在结果中包含任何其他JAR。如果要制作Web应用程序,请使用打包WAR(或EAR)。在WAR文件中有您的JAR公司。包括所有依赖项。

0

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

如果你想组装一些东西来分发,比如一个包含JAR和shell脚本的tar包,看看Maven assembly plugin。如果你想组装一个包含代码和你的依赖代码的JAR文件,可以使用jar-with-dependencies描述符运行Maven assembly插件。