在使用mvn程序集时如何包含本地jar:单个用于构建jar-with-dependencies?

时间:2012-04-26 09:47:16

标签: java maven jvm jython maven-assembly-plugin

具体来说,我正在尝试构建一个具有依赖关系的Datomic(http://www.datomic.com)jar,以便我可以在Jython REPL中进行实验。

Datomic不会在Maven上发布,但您可以将Datomic下载并安装到您当地的Maven仓库中,如下所示:

mvn install:install-file 
  -DgroupId=com.datomic 
  -DartifactId=datomic 
  -Dfile=datomic.jar 
  -DpomFile=pom.xml

但是我需要它作为具有依赖关系的单个jar,所以我可以把它放在我的类路径中并从Jython REPL中使用它。

mvn assembly:single构建一个带有依赖项的jar,但它不包含Datomic jar,大概是因为它是一个本地文件。

在执行mvn assembly:single时如何包含本地jar?

2 个答案:

答案 0 :(得分:1)

我认为使用Maven Shade插件会更好: http://maven.apache.org/plugins/maven-shade-plugin/

这将允许您创建一个über-jar ,它将包含您自己的类以及依赖项。

答案 1 :(得分:0)

只要将jar文件添加到项目的pom.xml文件(依赖项部分)中,jar是否在本地安装并不重要:

<dependencies>
  ... ...
  <dependency>
    <groupId>com.datomic</groupId>
    <artifactId>datomic</artifactId>
    <version>1.0</version>
  </dependency>
</dependencies>

查看Maven Assembly Plugin docum jar-with-dependency

  

使用jar-with-dependencies作为程序集 - 插件配置的descriptorRef,以便创建一个JAR,其中包含项目的二进制输出及其解压缩的依赖项。这个内置描述符使用JAR归档格式生成带有分类器jar-with-dependencies的程序集。

     

请注意,jar-with-dependencies仅提供对uber-jar的基本支持。要获得更多控制权,请使用Maven Shade Plugin

示例pom.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals><goal>single</goal></goals>
    </execution>
  </executions>
</plugin>