JF *_*ier 5 java jar java-ee maven
我们正在构建一个将在Websphere上运行的耳朵,其中提供了j2ee.jar.
现在我们的情况是ejb(称为ejb.jar)依赖于另一个jar(称为util.jar),它依赖于j2ee.jar.
如果将util.jar的pom中的j2ee.jar标记为"提供",则ejb.jar将不会生成,因为提供的不是传递的.如果我们将其标记为"compile",它可能会成为ear的编译依赖项,除非我们覆盖范围.
什么是最好的方法?util.jar应该提供依赖关系,即使它只是一个简陋的jar?或者jar应该只有编译依赖?
JAR 可以提供依赖项...但是对其有依赖项的用户需要确保该依赖项实际上将在运行时提供。由于提供的依赖项不可传递,因此它们还需要确保编译时不依赖它;但如果这样做,最佳实践是使用编译(或提供)范围显式声明它,而不是依赖某种形式的传递性(看看analyze
依赖插件的目标,例如,列出使用的,但未声明,依赖)。
maven-plugin-annotations
为提供的依赖项的Maven 插件,因为它们只需要构建注释。不过,根据经验,除了上述情况之外,您可能不希望在 JAR 项目内提供 JAR 依赖项:应该由客户端来决定您的某些编译时依赖项是否会被提供。为他们的具体情况提供,并让客户覆盖范围。作为一名库编写者,您并不真正知道您的库将如何使用。
在您的特定情况下,由于ejb.jar
实际上需要j2ee.jar
编译,因此最好使用编译来声明该依赖项,甚至使用您的情况下提供的范围来util.jar
声明该依赖项,无论为j2ee.jar
. (我会注意到,实用程序 JAR 依赖于 Java EE Web 应用程序类中的 JAR,这很奇怪。)
归档时间: |
|
查看次数: |
700 次 |
最近记录: |