2012-11-20 69 views
0

我有这种依赖性(和其他许多类似这样):Maven的EAR编译

<dependency> 
    <groupId>jShrink</groupId> 
    <artifactId>jShrink</artifactId> 
    <version>3.0.2</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/../kladr-ear/lib/jShrink-3.0.2.jar</systemPath> 
</dependency> 

因此,如何增加这个JAR到EAR/lib文件夹与Maven而包?

回答

-2

所以我找到了将jar库放入ear/lib路径的方法。我已将它们添加为<jarModule>maven-ear-plugin。在每个<jarModule>中,我还添加了<bundle> - 这个jar将被复制的路径。

+0

将它们作为依赖关系添加到POM就足够了。 – fnt

+0

没有它不够,因为与范围系统的依赖关系不会被复制到lib目录。 –

+1

为什么人们希望依赖于与EAR一起交付的范围“系统”?这个范围的依赖性意味着在运行时提供。 – fnt

1

综观现有的Maven scopes,我希望你以纪念这个作为

<scope>compile</scope> 

并上传jar文件到你的资料库(本地或远程)。 Maven应该给你适当的命令行来执行上传。

编辑:如下所述,这个范围是默认,因此你可以省略它。

+0

因此,如果我需要将该项目打包到另一台计算机上,我需要将这个罐子再次上传到仓库中。 –

+0

顺便说一句,正如我注意到的,maven添加jar到EAR/LIB文件夹,只有当他们没有任何范围时... –

+0

你不需要编译,它是未指定时的默认值。 –

0

进入EAR的依赖性通常应基于EJB模块所需的依赖性。如果在编译范围内有一个包含库X的EJB模块,那么这将触发Maven想要将该库打包到EJB中。耳朵根本不需要管理任何示波器。

如果您没有任何EJB并且只有WAR,我不会将库打包到EAR中,而只是将它们作为WAR的一部分进行部署(因此它们最终放在WEB-INF/lib中)。保持Web依赖关系很好,并且包含每个模块,即使这意味着您得到重复。

另外编译的是默认范围,因此您不需要手动声明它,除非您正在重写另一个依赖项的范围集。