如何将Maven指向Java源代码依赖项?
我有一个ApacheArchiva Repo,我已经为我正在处理的Maven项目处理二进制依赖关系;但是,该项目似乎还依赖于本地第三方源代码(不确定发行许可证)。有没有一种方法可以让Maven在需要构建时从某个地方获取这个源代码?通常,源代码会存储在SCM中,但对于我只用于编译的java源文件(仅在编译时需要),但不希望在主“/src”目录中使用的java源文件,这似乎不是正确的解决方案。详细说明和最佳实践值得赞赏,我对Java开发和Maven非常陌生。您可以构建第三方源代码的Jar文件,并将其放在/lib文件夹下,并在pom.xml文件中提供依赖关系,现在当您构建代码时,依赖关系将从特定的Jar文件中获取如何将Maven指向Java源代码依赖项?,java,maven,dependencies,dependency-management,Java,Maven,Dependencies,Dependency Management,我有一个ApacheArchiva Repo,我已经为我正在处理的Maven项目处理二进制依赖关系;但是,该项目似乎还依赖于本地第三方源代码(不确定发行许可证)。有没有一种方法可以让Maven在需要构建时从某个地方获取这个源代码?通常,源代码会存储在SCM中,但对于我只用于编译的java源文件(仅在编译时需要),但不希望在主“/src”目录中使用的java源文件,这似乎不是正确的解决方案。详细说明和最佳实践值得赞赏,我对Java开发和Maven非常陌生。您可以构建第三方源代码的Jar文件,并将其
<dependency>
<groupId>--grp id name--</groupId>
<artifactId>--artifact id--</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>--${basedir}\lib\{name}.jar--</systemPath> (Path of jar)
</dependency>
</dependencies>
--grp id名称--
--工件id--
系统
1
--${basedir}\lib\{name}.jar--(jar的路径)
*在实施时删除“---”。可能的解决方案:
- 说服第三方项目将带有类文件的JAR部署到Maven Central(如果是开源的)
- 说服第三方项目将带有类文件的JAR部署到Apache Archiva Repo(如果是封闭源代码且在同一组织中)
- 说服第三方项目将带有类文件的JAR部署到他们自己的Maven存储库管理器中,并在ApacheArchiva实例中注册该repo(如果是封闭源代码,而不是在同一个组织中;不确定ApacheArchiva是否提供此类功能)
- 自己用类文件构建JAR,并将其部署到ApacheArchiva repo。然后像往常一样声明对它的依赖关系
...
org.codehaus.mojo
构建助手maven插件
1.7
添加源
生成源
添加源
显示第三方源代码的路径
...
您是否只需要在编译时使用该源代码?@Puce是的,这是正确的。因此,为了澄清:依赖项始终必须打包?(比如进入一个.jar)@BrandonSnider是的,至少有现成的特性(jar、pom、ear、war等等)。不过,我不确定定制组件支持什么。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>path to where your 3rd party source code is present</source>
...
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>