如何将Maven指向Java源代码依赖?

时间:2016-09-13 14:48:47

标签: java maven dependencies dependency-management

我有一个Apache Archiva Repo,我已经设置了处理我正在处理的Maven项目的二进制依赖项;但是,该项目似乎也依赖于本地第三方源代码(不确定分发许可证)。有没有办法可以将这个源放在Maven可以从需要进行构建时获取它的某个地方?通常情况下,源代码将存储在SCM中,但这似乎不是我只用于编译的java源文件的正确解决方案(仅在编译时需要),但并不需要我的主要" / src"目录。我很了解Elaborations和最佳实践,我对Java Development和Maven都很陌生。

3 个答案:

答案 0 :(得分:2)

可能的解决方案:

  • 说服第三方项目将包含类文件的JAR部署到Maven Central(如果是开源)
  • 说服第三方项目将带有类文件的JAR部署到Apache Archiva Repo(如果是封闭源并在同一组织中)
  • 说服第三方项目将带有类文件的JAR部署到他们自己的Maven Repository Manager,并在Apache Archiva实例中注册该repo(如果在同一组织中使用Closed Source和 not ;不确定Apache Archiva是否提供此类功能)
  • 自己使用类文件构建JAR并将其部署到Apache Archiva存储库。然后像往常一样声明对它的依赖

答案 1 :(得分:1)

您可以构建第三方源代码的Jar文件并将其放在you / 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>

*实施时删除“ - - ”。

答案 2 :(得分:0)

您可以使用Build Helper Plugin,例如:

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