идентификатор нескольких артефактов в одном помпе - PullRequest
2 голосов
/ 31 января 2012

Есть проект maven (баночка), но теперь его нужно разделить на два артефакта

Я хочу получить два артефакта мавена, как показано ниже

<groupId>xxx</groupId>
<artifactId>xxx-client</groupId>

<groupId>xxx</groupId>
<artifactId>xxx-impl</groupId>

Но весь код находится в одном проекте.

Мой вопрос будет таким: Как я могу упаковать необходимые артефакты, не слишком меняя проект.

Тогда

развертывание пакета mvn

автоматически развернет эти два артефакта в хранилище На самом деле я не хочу разделять эти проекты на два проекта Maven.

Ответы [ 4 ]

3 голосов
/ 31 января 2012

Я не уверен, есть ли возможность иметь два тега <artifactId> в одном POM, поскольку он уникален. Что вы можете сделать, это, вы можете иметь два файла pom, скажем, pom.xml и pom_impl.xml, теперь

  • для развертывания клиента do, mvn package deploy
  • для развертывания impl do, mvn -f pom_impl.xml package deploy

Никогда не пробовал, хотя.


Разъяснение : Вопрос кажется неоднозначным, похоже, у вас есть один проект, но вы хотите создать два артефакта (клиентский и impl) из одной и той же кодовой базы. Читая его снова, я чувствую, что у вас есть два проекта (два разных кода), но вы просто хотели объединить его, чтобы он вел себя как два модуля одного проекта. Мой ответ предполагает первый случай.

1 голос
/ 31 января 2012

Если я правильно понял вопрос, вам нужно иметь супер-помпа (xxx / pom.xml) и два разных помпа для обоих ваших проектов (xxx-client и xxx-impl). Структура вашего супер-помпона будет такой:

<?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>xxx</groupId>
    <artifactId>xxx</artifactId>
    <packaging>pom</packaging>

    <modules>
        <module>xxx-client</module>
        <module>xxx-impl</module>
    </modules>
</project>

Затем, когда вы развернете свой основной модуль, он также развернет свои модули.

Вот ссылки, если вы хотите узнать больше о super pom и modules .

0 голосов
/ 01 февраля 2012

укажите pom

Сделайте два pom, затем укажите pom в командной строке, это самый простой способ.

0 голосов
/ 31 января 2012

Это называется «мультимодульный проект» в мире Maven. Вы можете найти информацию о том, как это сделать, например, здесь . На самом деле вам нужно два отдельных POM и дополнительное, чтобы объединить оба.

...