用maven依赖插件包含另一个jar的全部内容

时间:2017-10-18 14:51:27

标签: java maven

我需要将另一个罐子的全部内容包含在我的罐子里。这是因为我需要将不符合OSGi的库包装到OSGi容器中。

受影响的图书馆是Saxon-he,我找到了一个包装它的项目:https://github.com/lucee/osgi-bundle-saxon-he.git。这是使用的maven依赖插件:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-dependency-plugin</artifactId>
     <version>2.10</version>
     <executions>
       <execution>
         <id>unpack</id>
         <phase>validate</phase>
         <goals>
           <goal>unpack</goal>
         </goals>
         <configuration>
           <artifactItems>
             <artifactItem>
               <groupId>net.sf.saxon</groupId>
                <artifactId>Saxon-HE</artifactId>
                <version>9.7.0-10</version>
               <type>jar</type>
               <overWrite>false</overWrite>
               <outputDirectory>${project.build.directory}/classes</outputDirectory>
             </artifactItem>
           </artifactItems>
           <overWriteReleases>true</overWriteReleases>
           <overWriteSnapshots>true</overWriteSnapshots>
         </configuration>
       </execution>
     </executions>
   </plugin>

问题是,这个解决方案并不包装所有内容。缺少原始jar根目录中的XML,当库试图读取它们时抛出异常......

我试图改变任务的阶段,但没有成功......解决方案与java类完美配合(之后,调用maven-bundle-plugin,并且正确生成所有OSGi导入)但它在涉及资源方面失败了......

知道怎么做吗?所有东西都被解压缩到目标/类中,但这些东西没有打包到目标jar中......

1 个答案:

答案 0 :(得分:0)

对于您的预期行为,您可以使用maven-assembly-plugin插件。 事实上,正如文档中所报告的那样,它将创建一个JAR,其中包含项目的二进制输出以及解压缩的依赖项。

  

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

有关其他详情,请查看maven-assembly-plugin docs

这样说,你可以像下面那样配置它:

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