【问题标题】:Maven dependency for javax.ejb.jar into .m2 directory将 javax.ejb.jar 的 Maven 依赖项放入 .m2 目录
【发布时间】:2014-07-08 08:22:16
【问题描述】:

我在我的 .m2 目录中找不到 javax.ejb.jar,我需要 import javax.ejb.Schedule; 的这个 jar,这是我的 pom 文件条目。

<dependency>
            <groupId>javax.ejb</groupId>
            <artifactId>ejb-api</artifactId>
            <version>3.0</version>
            <scope>provided</scope>
        </dependency>

我不确定它是否会起作用,或者它是一种正确的做事方式。有人可以帮忙更改POM 文件,以便将javax.ejb.jar 下载到.m2 目录中。

更新

  1. .m2 我的意思是在正确文件夹中的存储库目录中 层次结构(无论它是什么)。
  2. 为什么?我们有多个子项目(在 eclipse 工作区中),为了解决依赖关系,我们使用 M2_REPO/path/to/the/required_library_file.jar,现在这些项目是代码库的一部分,每个开发人员都下载源代码,Maven 将所有 jar 下载到存储库目录(开发人员使用任何 OS/平台)。这个来自M2_REPO 的相对路径帮助开发人员拥有consitenat 代码(用于eclipse 项目)。否则每个人都会添加自己的路径。

如果仍然没有意义,这就是我想要的,请给我一个 POM 文件的条目,它将 javax.ejb.jar 文件下载到 .m2 目录中,无论子路径是什么。

我必须手动将这个 jar 包含在每个项目中(并且每个开发人员也需要它们从任何目录有 glassfish(C:、D:、E: 或 /home/glassfish/modules/)

D:\servers\glassfish-3.1.2\glassfish3\glassfish\modules\javax.ejb.jar

每个项目中的其余 jar 包都包含在 M2_REPO/path/to/jar 中,这样可以减少要提交的代码库的任何更改。

M2_REPO/javax/ejb/ejb-api/3.0/ejb-api-3.0.jar
M2_REPO/javax/enterprise/cdi-api/1.0-SP1/cdi-api-1.0-SP1.jar
M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar

等等等等

【问题讨论】:

  • mvn clean compile -e 时出现什么错误?
  • 为什么要在.m2 目录中?通常它会被下载到.m2/repository/&lt;path to artifact&gt;
  • findjar.com/jar/org/apache/openejb/ejb31-api-experimental/3.1.1/… (不确定有多大用处,但 IDE 中的 findjar.com 或 maven 依赖项搜索很好。
  • 你能展示整个POM吗?依赖项下添加依赖了吗?
  • @JoopEggen 范围不是这里的问题。

标签: java maven jakarta-ee jar


【解决方案1】:

我想我现在明白你的意思了:)

你指定的maven依赖

<dependency>
  <groupId>javax.ejb</groupId>
  <artifactId>ejb-api</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>

您在.m2/repository/javax/ueb/ejb-api/3.0/ejb-api-3.0.jar 中的不包含类/接口javax.ejb.Schedule

但是您在 glassfish 服务器中找到了 jar 文件,其中确实包含 javax.ejb.Schedule,它的名称是 D:\servers\glassfish-3.1.2\glassfish3\glassfish\modules\javax.ejb.jar,现在您问如何将其放入 pom 中?

好吧,Java EE API 及其在 maven 中的官方 jar 在某种程度上是一种不和谐的研究。 如果您在 maven central 上运行搜索,您会发现多个包含该类的 jar。您可能会注意到,所有应用服务器供应商都为每个版本的每个 api 的各个方面提供自己的版本。

您应该能够在 3.1.2 版本的 glassfish 中找到带有 javax.ejb 模块的 jar

http://search.maven.org/#artifactdetails|org.glassfish|javax.ejb|3.1.2|jar

在这种情况下,依赖项将是

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.ejb</artifactId>
  <version>3.1.2</version>
  <scope>provided</scope>
</dependency>

【讨论】:

  • 是的,你完全正确,我的朋友。但是 maven 无法找到它 [artifact:dependencies] Unable to locate resource in repository [artifact:dependencies] [INFO] Unable to find resource 'org.glassfish:javax.ejb: pom:3.1.2' in repository JBoss repository (http://repository.jboss.org/nexus/con tent/groups/public/)
  • 所以它告诉你它在 JBoss 存储库中找不到它,它不是 maven 中心。出于某种原因,我怀疑您的 Maven 安装有一个用户调整的 settings.xml。
  • 如果您浏览 JBOSS 存储库 repository.jboss.org/nexus,您也可以在那里搜索 javax.ejb.Schedule。我确实在一个名为 org.glassfish.main.ejb:javax.ejb:3.1.2 的包中找到了它
【解决方案2】:

我找到了another artifactId here,虽然 maven 也有你的版本。 一个(非常)奇怪的 Maven 缓存问题?那么它可能明天就可以工作了。

<dependency>
    <groupId>javax.ejb</groupId>
    <artifactId>javax.ejb-api</artifactId>
    <version>3.2</version>
</dependency>

虽然这是一个新版本,但应该可以编译。

【讨论】:

    【解决方案3】:

    您可能需要在 pom.xml 文件或 .m2/settings.xml 文件中提供存储库位置,以便将所需的 jar 下载到 .m2 目录中。

    【讨论】:

    【解决方案4】:

    依赖被声明为提供,这意味着容器将提供它。

    您使用的是什么容器?我认为 Tomcat/Jetty 不会像 Java EE 那样提供那个 jar。在这种情况下,只需将范围更改为 compile

    <dependency>
      <groupId>javax.ejb</groupId>
      <artifactId>ejb-api</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
    </dependency>
    

    有关依赖范围的更多信息: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

    【讨论】:

    • 这并不能解释为什么 jar 没有被下载。
    • 是的。范围provided 意味着Maven 不会下载jar,因为它已经在容器类路径中。如果要下载 jar,请将其更改为 compileruntime
    • 不,它没有。提供的范围意味着在创建最终结构时,jar 不会与应用程序捆绑在一起。它仍将被下载并可供编译。
    • @polypiel 根本不是真的。提供意味着其他人(在这种情况下是容器)将在运行时提供它。提供仍然会下载依赖项以便对其进行编译。
    • @PeterLiljenberg 完全同意。
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2018-10-20
    • 2011-02-09
    • 2013-05-11
    相关资源
    最近更新 更多