2017-04-05 77 views
1

我創建了一個名爲app-service項目,該項目採用的是核心模塊(app-core)。我通過包括駐留在項目的基本目錄<systemPath>在我的項目是Maven的依賴關係這個核心模塊。Maven構建與本地模塊artifactory的(庫)

<dependency> 
    <groupId>app-group</groupId> 
    <artifactId>app-core</artifactId> 
    <version>${project.version}</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/app-core-0.1.1-SNAPSHOT.jar</systemPath> 
</dependency> 

我配置Maven和運行目標

mvn clean package install 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 44.733 s 
[INFO] Finished at: 2017-04-05T12:27:46+05:30 
[INFO] Final Memory: 29M/533M 
[INFO] ------------------------------------------------------------------------ 

BUILD SUCCESS$CLASSPATH不包含APP-core.jar添加的文件,期待這一點,包括在行家<dependencies>

我列出的所有依賴關係想要使用此應用程序核心模塊作爲compile範圍。當我嘗試這一點,提示錯誤

[ERROR] 'dependencies.dependency.systemPath' for app-group:app-core:jar must be omitted. This field may only be specified for a dependency with system scope. @ line 71, column 25 

注:我不會在公共倉庫上傳此app-core出於安全目的。我想通過項目的基本目錄,因爲我需要部署相同的Heroku使用。


更新

我GOOGLE了一下,發現安裝本地資源庫的插件。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.5.2</version> 
    <executions> 
     <execution> 
      <id>install-external</id> 
      <phase>clean</phase> 
      <configuration> 
       <file>${project.basedir}/app-core-0.1.1-SNAPSHOT.jar</file> 
       <repositoryLayout>default</repositoryLayout> 
       <groupId>app-group</groupId> 
       <artifactId>app-core</artifactId> 
       <version>${project.version}</version> 
       <packaging>jar</packaging> 
       <generatePom>true</generatePom> 
      </configuration> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

但結果是相同的......

回答

0

我認爲錯誤是告訴你刪除部分你如何設置你的依賴。 您忽略了它的部分,如:

<systemPath>${project.basedir}</systemPath> 

..和從那裏工作。

編輯:

我也想嘗試的信息最有限的量。

<dependency> 
    <groupId>app-group</groupId> 
    <artifactId>app-core</artifactId> 
    <version>${project.version}</version> 
</dependency> 

嘗試更改項目版本甚至。由於pom.xml寫入不正確,我在Maven依賴不能從存儲庫中取出時遇到了問題。我最終解決它們的方式是不斷嘗試編寫依賴關係的不同方式,直到它實際上正確地將其拉出。

+0

感謝您的回答。我試過相同,但行家構建失敗,錯誤'無法解析項目的應用程序組相關性:應用服務:罐子:0.11快照:未能找到應用程序組:應用核心中:jar:0.1.1-快照< my_repository_url>'。它不會在我的應用程序代碼所在的本地項目文件夾中搜索。 – eigenharsha

1

您應該按照本指南Adding Unmanaged Dependencies to a Maven Project在Heroku。總結指導,運行:

mvn deploy:deploy-file -Durl=file:///path/to/app-group/app-core/ -Dfile=app-core-1.0.jar -DgroupId=app-group -DartifactId=app-core -Dpackaging=jar -Dversion=1.0 

那麼這個庫添加到您的pom.xml

<repository> 
    <id>project.local</id> 
    <name>project</name> 
    <url>file:${project.basedir}/repo</url> 
</repository> 

然後使用依賴我的pom.xml

<dependency> 
    <groupId>app-group</groupId> 
    <artifactId>app-core</artifactId> 
    <version>1.0</version> 
</dependency> 
+0

感謝您的回答。我嘗試了相同,但是maven生成失敗,錯誤爲'無法解決項目app-group的依賴關係:app-services:jar:0.11-SNAPSHOT:未能找到app-group:app-core:jar:0.1.1-SNAPSHOT in < myRepository_url> .' 我的倉庫包含兩個倉庫,一個是我的內部中央倉庫,另一個倉庫的地址爲' file:$ {project.basedir}/' – eigenharsha

+0

我用一個插件來安裝我的app-core' Maven的安裝,plugin' – eigenharsha