Как сохранить версию пакета jar в проекте с несколькими файлами Pom?

Причина разделения модулей

Для проектов, разработанных с использованием технологии Java, с течением времени код увеличивается, а структура каталогов усложняется.В это время в ходе проекта возникнут различные проблемы: (1) коды
разных предприятий связаны друг с другом. После того, как в системе возникает проблема, ее трудно устранить, найти и исправить.
(2) Это увеличивает стоимость участия новичка в разработке и требует от разработчика, знакомого со всем проектом, поддерживать структуру всего проекта.
(3) Границы кода, за которые разработчики несут ответственность за себя или других, очень расплывчаты.Если они изменяют коды, за которые несут ответственность другие, но другая сторона не знает, отслеживание ответственности очень проблематично.

Поэтому мы можем разделить проект на несколько модулей.
Разделение нескольких модулей может уменьшить связь между кодами (от связи на уровне класса до связи на уровне пакета jar). Модули также стандартизируют разделение границ кода. Разработчики могут легко определить, за что они несут ответственность, с помощью модулей. Для проектов, управляемых maven, каждый модуль соответствует файлу pom.xml.

Сплит-кейс

Например, проект разделен нами на участников, склады и заказы, и мы увидим некоторые названия пакетов:

	org.myorg.app.user
	org.myorg.app.repository
	org.myorg.app.order

Соответствующая структура модуля Maven выглядит следующим образом:

	app-parent
		|-- pom.xml 
		|
		|-- app-user
		|      |-- pom.xml 
		|
		|-- app-repository
		|      |-- pom.xml 
		|
		|-- app-order
		|      |-- pom.xml 

Когда есть много подмодулей, часто бывает трудно унифицировать версию пакета jar и трудно устранять конфликты. Чтобы поддерживать согласованность версий одних и тех же зависимостей в разных подпроектах, обычно используйте dependencyManagement для поддержки связанных зависимостей в файле pom родительского проекта.

1.在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
2.pom.xml文件中,jar的版本判断的两种途径
	2.1 如果dependencies中的dependency声明了version,都以dependency里的version为准。
	2.2 如果dependencies里的dependency自己没有声明version元素,那么maven就会dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错。

пример pom-файла

вставьте сюда описание изображения
родительский pom-файл

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.suncy</groupId>
    <artifactId>course-reminder</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>course-reminder-app</module>
        <module>course-reminder-common</module>
    </modules>

    <!--版本-->
    <properties>
        <commons-codec>1.9</commons-codec>
    </properties>

    <!--jar包版本管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--导入jar包-->
    <dependencies>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
    </dependencies>

</project>

дочерний файл pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>course-reminder</artifactId>
        <groupId>com.suncy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>course-reminder-common</artifactId>

    <dependencies>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
    </dependencies>
</project>

Supongo que te gusta

Origin blog.csdn.net/weixin_44532671/article/details/121642685
Recomendado
Clasificación