Maven:如何将代码中没有的jar包括到J2EE项目中?

在我的J2EE项目中,我有一些依赖项,这些依赖项在任何Maven仓库中都不可用,因为它们是专有库。 这些库需要在运行时可用,因此必须将其复制到目标/.../ WEB-INF / lib ...

现在,我将它们列为POM中的系统依赖项,但是使用这种方法的问题是,在编译过程中没有将其复制到目标构建中。 这种方法也不是很优雅。

那么,将它们集成到Maven中的最佳方式是哪种?

注意:我不想创建我自己的Maven存储库。


正如你所说的,你不想建立自己的存储库,也许这会有所帮助。

您可以使用maven-install-plugin的install-file目标将文件安装到本地存储库。 如果您为每个文件创建一个包含Maven调用的脚本,并将其与jar保持在一起,那么您(以及任何具有访问权的人)可以轻松地将jar(以及相关的pom文件)安装到其本地存储库中。

例如:

mvn install:install-file -Dfile=/usr/jars/foo.jar -DpomFile=/usr/jars/foo.pom
mvn install:install-file -Dfile=/usr/jars/bar.jar -DpomFile=/usr/jars/bar.pom

要不就

mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0 -Dpackaging=jar

然后,您可以在项目中正常引用依赖项。

然而,你最好的选择是建立一个内部的远程仓库,我建议你自己使用Nexus。 如果需要,它可以在你的开发盒上运行,而且开销很小。


对于希望快速解决此问题的人员:

<dependency>
  <groupId>LIB_NAME</groupId>
  <artifactId>LIB_NAME</artifactId>
  <version>1.0.0</version>
  <scope>system</scope>
  <systemPath>${basedir}/WebContent/WEB-INF/lib/YOUR_LIB.jar</systemPath>
</dependency>

只需为您的库指定一个唯一的组ID和工件名称并指向它在文件系统中的位置即可。 你已准备好出发。

当然,这是一个肮脏的快速修复,只能在你的机器上工作,并且如果你不改变这个库的路径。 但有时候,这就是你想要的,运行并做一些测试。

编辑:只是重新红色的问题,并意识到用户已经使用我的解决方案作为临时修复。 我会留下我的回答,作为对这个问题的其他人的快速帮助。 如果有人不同意这个,请给我留言。 :)


在您的项目下创建存储库文件夹。 让我们来

${project.basedir}/src/main/resources/repo

然后,将您的自定义jar安装到此回购:

mvn install:install-file -Dfile=[FILE_PATH] 
-DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS]  
-Dpackaging=jar -DlocalRepositoryPath=[REPO_DIR]

最后,将以下回购和依赖项定义添加到项目pom.xml中:

<repositories>
    <repository>
        <id>project-repo</id>
        <url>file://${project.basedir}/src/main/resources/repo</url>
    </repository>
</repositories>

<dependencies>    
    <dependency>
        <groupId>[GROUP]</groupId>
        <artifactId>[ARTIFACT]</artifactId>
        <version>[VERS]</version>
    </dependency>
</dependencies>
链接地址: http://www.djcxy.com/p/29687.html

上一篇: Maven: How to include jars, which are not available in reps into a J2EE project?

下一篇: maven build dependency jar file not reflecting changes in code