2016-09-13 29 views
1

我有一个Apache Archiva Repo,它是为了处理我正在处理的Maven项目的二进制依赖项而设置的;然而,该项目似乎也有一些依赖本地第三方源代码(不确定分发许可证)。有什么方法可以将此源放在Maven可以在需要构建时抓住它的地方?通常情况下,源代码将存储在SCM中,但似乎并不像我仅用于编译的Java源文件的正确解决方案(只在编译时需要),但不希望在我的主“/ src”目录。评论和最佳实践表示赞赏,我对Java Development和Maven很新颖。如何将Maven指向Java Sorce代码依赖关系?

+0

你只需要在编译的时候,源代码? – Puce

+0

@Puce是的,这是正确的。 –

回答

2

可能的解决方案:

  • 说服第三方项目部署与类文件的Maven中央的JAR(如果开放源代码)
  • 说服第三方项目部署与类文件的JAR到Apache Archiva回购(如果闭源,并在同一个组织)
  • 说服第三方项目部署与类文件到自己的Maven仓库管理的JAR和注册在Apache Archiva实例回购(如封闭源和不是在同一个组织;不知道如果Apache Archiva提供这样的功能)
  • 构建JAR与类文件自己,并将其部署到Apache Archiva回购。然后声明一个依赖于它像往常一样
+0

因此,为了澄清:依赖性总是必须打包? (比如变成一个.jar) –

+0

@BrandonSnider是的,至少有开箱即用的功能(jar,pom,ear,war,...)。不过,我不确定自定义组件支持什么。 – Puce

1

您可以构建第三方源代码的Jar文件并将其放在您的/ lib文件夹下,并在您的pom.xml文件中提供依赖关系。现在,当您构建代码时,依赖关系将从特定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> 

*执行时删除“ - - ”。

0

可以使用Build Helper Plugin,e.g:

<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>