我想使用Java和JMX来监视WebLogic。我需要使用提供到WebLogic lib目录中的wlclient.jar。
是否有可用于下载wlclient.jar的maven存储库? 我找到的唯一方法是手动将jar文件导入我的存储库,但这对我来说不是一个选项。
答案 0 :(得分:4)
另一种方法是创建项目内存储库。这使您的项目真正可移植。此方法类似于A. Di Matteo提到的“使用依赖关系与系统范围”,但它具有能够使用任何范围(而不仅仅是“系统”)的额外好处。
我遇到了和你一样的问题,使用了Maven Central中没有的jar,在探索了所有可能的选项之后,我选择了项目内的存储库,我认为这样可以更好地系统确定依赖关系。它让你自由选择范围。
执行此操作的步骤:
在项目中创建一个名为“lib”的子目录
将此lib添加为pom中的存储库
<repositories>
<repository>
<id>lib</id>
<name>In Project Repo</name>
<url>file://${basedir}/lib</url>
</repository>
</repositories>
mvn install:install-file -Dfile=myArtifact.jar -DgroupId=x.y.z -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar -DgeneratePom=true
<dependencies>
....
<dependency>
<groupId>x.y.z</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
答案 1 :(得分:3)
如果您无法在任何Maven资源库中找到该jar,您可以根据需要应用以下任何操作:
内部Maven存储库
如果您没有内部存储库(如Artifactory或Nexus),通常在公司中用作内部maven缓存/代理/控制点,但也可以选择安装它并在本地运行。<登记/>
然后,您可以在那里上传库,提供Maven GAV(GroupId,ArtifactId,Version)并让Maven将其指向存储库(对于您的CI服务器,如果有的话,为您的同事指定)。然后,您可以将库添加为标准maven依赖项。
该解决方案具有更长的设置,但具有更好的可维护性。
在本地缓存中安装库
您可以使用Maven Install Plugin并将库安装到本地缓存中,如此官方Kinesis Firehose所示。
基本上,您可以运行以下命令:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=path-to\wlclient.jar -DgroupId=weblogic -DartifactId=wlclient -Dversion=1.0.0 -Dpackaging=jar
它将使用标准Maven GAV将库复制到本地Maven缓存。但是,如上所述,您应确保在任何CI服务器和任何团队配对计算机上复制相同的设置。然后,您可以将库添加为标准maven依赖项。 该解决方案具有更快的设置,但可维护性较低。
然而,这两种解决方案都会影响您的构建的可移植性(如果有人试图在您的公司网络或团队之外构建它,则构建将失败)。
使用系统范围的依赖
您可以将jar作为项目的一部分,并通过该依赖项的system
范围指向它。
<dependency>
<groupId>weblogic</groupId>
<artifactId>wlclient</artifactId>
<version>1.0.0</version>
<systemPath>${basedir}/path/to/library/wlclient-1.0.0.jar</systemPath>
<scope>system</scope>
</dependency>
您应该重命名jar,以符合Maven惯例 这个解决方案更具可移植性,需要更少的设置,但需要对其进行维护,并且需要将相关库作为版本化项目的一部分进行检查(有些人可能对这种做法存在强烈反对)。