javax.ejb.jar的maven依赖项到.m2目录中

时间:2014-07-08 08:22:17

标签: java maven java-ee jar

我无法在.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. by .m2我的意思是在正确文件夹的存储库目录中 层次结构(它是什么)。
  2. 为什么?我们有多个子项目(在eclipse工作区中),为了解决依赖关系,我们使用 M2_REPO /path/to/the/required_library_file.jar,现在这些项目是代码库的一部分,每个开发人员都下载了源代码,Maven将所有jar下载到存储库目录(使用任何OS / Platform的开发人员)。这个来自M2_REPO的相对路径可以帮助开发人员获得consitenat代码(用于eclipse项目)。否则每个人都会添加自己的路径。
  3. 如果它仍然没有意义,这就是我想要的,请给我一个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
    

    等等

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

虽然这是一个新版本,但对于编译它应该这样做。

答案 2 :(得分:0)

我想我现在听到你的意思了:)

您指定的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中的官方罐子在某种程度上是一种不协调的研究。 如果您在maven central上运行搜索,您会发现多个包含该类的jar。您可能会注意到,所有appserver供应商都会在每个版本中为每个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>

答案 3 :(得分:-2)

依赖项被声明为提供容器将提供它的含义。

你在用什么容器?我认为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