将属性传递给maven子模块,该子模块没有当前模块作为父模块

时间:2018-03-22 07:00:03

标签: java maven spring-boot

我有几个maven项目:

  • commons-lib(简单Java项目
  • 用户服务( Spring-Boot驱动项目
  • composite-service( Spring-Boot-driven project
  • 前端服务( Spring-Boot- / Angular2驱动的项目
  • all-services-parent(父项目构建其他所有内容

虽然 commons-lib 不太可能单独发布,但所有其他项目(父项除外)可能会单独发布。

如果列表中的前四个是第五个子模块,那么必须将其父级设置为父级(例如all-services-parent)作为回报吗?

由于我想在用户和复合服务中包含 commons-lib ,我知道我必须首先构建它。但是:上面的每项服务都可以单独发布 - 那么哪种建筑结构最适合我需要的呢?

是不是:

-- all-services-parent
   |-- (maven sub-module) commons-lib
   |-- (maven sub-module) user-service
   |-- (maven sub-module) composite-service
   |-- (maven sub-module) frontend-service

或:

-- all-services-parent
   |-- user-service-parent
       |-- (maven sub-module) commons-lib
       |-- (maven sub-module) user-service
   |-- composite-service-parent
       |-- (maven sub-module) commons-lib
       |-- (maven sub-module) composite-service
   |-- frontend-service

第二个建筑结构允许我通过调用" mvn clean install"来构建所有JAR。在all-services-parent上,同时仍然可以通过调用" mvn clean install"来正确构建单独的项目。在相应的父母身上,但它真的是如何完成的吗?

在我目前的设置中,我正在尝试使用第一个建筑结构,但是复合服务有" spring-boot-starter-parent"设置为其父级,我无法访问" all-services-parent" -module中的属性或任何内容。

我读到了Maven parent pom vs modules pom(一个看起来很有希望的问题),但它并不像我希望的那样适用于我的案例。

3 个答案:

答案 0 :(得分:1)

尝试导入spring boot parent而不是像这样继承它:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.5.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
       </dependencies>
</dependencyManagement>

答案 1 :(得分:0)

父模块属性文件可以通过子模块访问,但子模块属性文件无法访问其他子模块。

您需要为每个子模块执行单独的属性文件。

答案 2 :(得分:0)

在pom.xml文件中添加这样的子模块,并给出其绝对路径。
这应该是工作

<modules>
        <module>../TestWeb</module>
        <module>../TestBusiness</module>
        <module>../MsgScheduler</module>
        <module>../Connector</module>                   
</modules>