2016-09-13 63 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>