2017-04-05 1797 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