gpt4 book ai didi

java - 父 pom 和微服务

转载 作者:IT老高 更新时间:2023-10-28 20:53:35 26 4
gpt4 key购买 nike

  • 我们有几个微服务项目,每个项目都是独立的(在单独的 Spring Boot 服务器上运行,暴露其余服务,使用单独的 DB 架构...)
  • 我们使用 maven 来管理依赖关系。

让父 pom 将每个微服务声明为模块是个好主意吗?从而帮助管理公共(public)依赖项(例如每个项目中都使用 lib servlet-api 女巫,将其从所有项目中删除并仅在父 pom 中声明)

最佳答案

多模块父 pom 的“问题”是,在没有复杂配置文件的情况下,它将模块锁定在同一个发布周期中(假设您使用的是 Release Plugin,您应该这样做)。

我使用 Maven 的方式是有一个父 pom 声明:

每个模块都将父 pom 作为其父级,但父级对模块一无所知。

这样做的好处来自上面最后两个项目符号,即“管理”部分。 “管理”部分中包含的任何内容都需要在想要使用特定依赖项或插件的模块中重新声明。

例如,父级可能如下所示:

<project>

<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.0.00-SNAPSHOT</version>

...

<dependencies>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

</dependencies>

<dependencyManagement>

<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>

<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>2.1</version>
</dependency>

</dependencyManagement>

<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

<plugins>

<pluginManagement>

<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

</plugins>

</pluginManagement>

</project>

模块可能如下所示:

<project>

<parent>
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.0.00-SNAPSHOT</version>
</parent>

<groupId>com.example</groupId>
<artifactId>module</artifactId>
<version>1.0.00-SNAPSHOT</version>

<dependencies>

<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>

</dependencies>

<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>

</plugins>

</project>

该模块将:

  • 依赖于 org.slf4j:slf4j-api:1.7.7:compile, junit:junit:4.11:testcommons-lang:commons -lang:2.6:compile.
  • 有插件org.apache.maven.plugins:maven-assembly-plugin:2.4

关于java - 父 pom 和微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com