例如,我已经在我的依赖项中加入了junit-addons:junit-addons。但是在maven存储库中没有任何源代码。而且我知道它存在(我已经下载了它)。如何修改依赖项以便使用本地项目中的库而不是maven存储库(我将省略来自存储库的junit-addons并使用本地JAR及其源代码)。
注意:我使用m2eclipse。
答案 0 :(得分:4)
我已经非常直接地解决了这个问题:
我已经按照MAVEN标准${user.home}/.m2/repository/{group-name}/{artifactId}/{version}/
将文件复制到文件夹{artifactId}-{version}-sources.jar
中,它可以作为一个魅力! Eclipse检查本地存储库并找到源。
我不知道这是否是MAVEN方式。
答案 1 :(得分:2)
如何修改依赖项以便使用本地项目中的库而不是maven存储库
你做不到。如果源JAR在中央存储库中不可用,只需将源文件系统中的源放在文件夹,JAR或zip文件夹中(根据Maven的约定,您可以在本地存储库中install:install-file
一个源存档)和设置Eclipse使用它们(右键单击在包管理器中的Maven依赖项下的JAR下,选择 Java源附件并设置位置路径)。
答案 2 :(得分:2)
我使用Artifactory存储库的免费版本。我创建了一个jar文件{artifactId} - {version} -sources.jar,并将其上传到与二进制jar文件相同的group-id。 然后在我的pom中我添加了依赖:
<dependency>
<groupId>mygroupid</groupId>
<artifactId>artifact</artifactId>
<version>1.0</version>
<classifier>source</classifier>
</dependency>
在maven构建阶段,源jar被下载到我的本地存储库。 我使用netbeans 7.0,它会自动为我管理一切。例如,右键单击方法并选择go toSource正确地将我带到jar中的源代码。
答案 3 :(得分:1)
您可以使用install-file mojo将本地安装工件本地安装到本地maven存储库中。如果您想与其他人(比如您的团队或其他工作站)共享此工件,您可以使用自己的存储库管理器(例如Nexus)并将其配置为任何存储库的镜像,例如:中央。 Nexus将从中心获取(和缓存)工件。此外,您可以将任何工件(如junit-addons源)上传到您的nexus安装中。
要配置镜像,您必须编辑${user.home}/.m2/settings.xml
<settings>
<!-- SNIP -->
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<!-- replace nexus.example.com with the location of your nexus installation -->
<url>http://nexus.example.com/releases</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
<id>nexus</id>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</pluginRepository>
</profile>
</profiles>
</settings>
答案 4 :(得分:0)
将其下载到本地存储库后,您可以复制它。给它一个新的artifactId(例如libraryName-myVersion)并在pom中添加依赖项。确保在pom中更改文件夹名称,jar名称,pom名称和artifactId本身。将所有内容存储在本地存储库中现在,您可以使用您的依赖项的黑客版本。
但说实话,我认为这不是一个好主意。但在你的情况下,这可能有助于/无法避免。