2017-10-18 3065 views
0

我有以下项目结构{} project.parent.basedir采用路径子模块,而不是家长模块路径的

| prj 
    | a1_module 
    |src 
    |pom 
    | a2_module 
    |src 
    |pom  
    | lib 
    xyz.jar 
    |pom(parent) 

现在我注册子模块(a1_module)xyz.jar POM是这样的:

<dependency> 
    <groupId>com.asd.prj</groupId> 
    <artifactId>pubsub</artifactId> 
    <version>1.0.0.</version> 
    <scope>system</scope> 
    <systemPath>${project.parent.basedir}/lib/pubsub_2.11-1.0.0-SNAPSHOTjar</systemPath> 
</dependency> 

我希望${project.parent.basedir}/lib/pubsub_2.11-1.0.0-SNAPSHOTjar应该给我prj/lib/pubsub_2.11-1.0.0-SNAPSHOTjar,但它给了我这样的prj/a1_module/lib/pubsub_2.11-1.0.0-SNAPSHOTjar路径。

由于没有保存在子模块中的jar,但它保存在主项目的“lib”目录之外,所以我得到错误。

This questionproject.parent.basedir应该给出该模块路径的父路径,但在我的情况下,它给我的子模块路径,而不是父模块路径。

任何暗示我做错了什么或其他方式注册我的本地jar在子模块中的方式。

+1

删除系统范围的依赖性,并且不使用这样的lib目录结构...他们真的不好的东西在Maven中。更好地开始使用资源库管理器并将这个jar部署到资源库管理器中,然后像往常一样使用jar依赖项...(我假设pubsub-1.0.0-SNAPSHOT.jar是由另一个Maven构建创建的?) – khmarbaise

+0

你是对的@khmarbaise。我将遵循资源库管理器的方式。 这不是一个好的方法。 –

回答

0

您可以使用此:

<systemPath>${basedir}/../lib/pubsub_2.11-1.0.0-SNAPSHOTjar</systemPath> 
+0

试过这个,但仍然是同样的问题。 –