jar-with-dependencies不包括外部存储库

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

标签: java maven-2 maven-plugin executable-jar maven-assembly-plugin

我正在尝试使用pom.xml执行可执行jar,但不包括couchbase外部存储库。

Eclipse中的一切运行正常。我在pom中有了couchbase客户端:

<repositories>
    <repository>
        <id>couchbase</id>
        <name>Couchbase Maven Repository</name>
        <layout>default</layout>
        <url>http://files.couchbase.com/maven2/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

...

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>couchbase</groupId>
    <artifactId>couchbase-client</artifactId>
    <version>1.1.7</version>
    <scope>provided</scope>
</dependency>

插件:

   <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <configuration>
       <archive>
         <manifest>
           <mainClass>fully.qualified.MainClass</mainClass>
         </manifest>
       </archive>
       <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
       </descriptorRefs>
     </configuration>
     <executions>
       <execution>
         <id>make-assembly</id> <!-- this is used for inheritance merges -->
         <phase>package</phase> <!-- bind to the packaging phase -->
         <goals>
           <goal>single</goal>
         </goals>
       </execution>
     </executions>
   </plugin>

但是com.fasterxml.jackson.core包含在jar中,但是com.couchbase.client ...不是

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试从couchbase-client依赖项中删除“提供”范围。这表示assembly-plugin不包含此依赖项,因为它将在运行时提供

答案 1 :(得分:0)

您将couchbase-client的范围定义为“已提供”,这意味着:您在编译时需要它但不需要部署它,因为无论代码运行在哪里,必要的类都已经存在(例如Java EE)在Java EE应用程序服务器中运行Java EE应用程序时的API类。

所以问题是:“提供”范围是否正确?