2012-01-31 2 views
2

Существует проект Maven (банку), но теперь она должна быть пролита в двух артефактовмульти артефакт идентификатор в одном ПОМ

Я хочу иметь два Maven артефакта как следующий

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

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

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

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

Затем

МВН пакет развертывания

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

+0

Было бы неплохо, если бы вы могли опубликовать свой pom, чтобы дать лучшее предложение, как решить вашу проблему и, в частности, понять вашу проблему вообще. – khmarbaise

ответ

3

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

  • для развертывания клиента сделать, mvn package deploy
  • развернуть осущ сделать, mvn -f pom_impl.xml package deploy

Никогда не принимала хоть.


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

1

Если я правильно понял вопрос, вы должны иметь супер pom (xxx/pom.xml) и два разных poms для обоих ваших проектов (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> 

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

Ниже приведены ссылки, если вы хотите узнать больше о super pom и modules.

0

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

0

specify pom

сделать два ПОМ, а затем указать POM в командной строке, что это самый простой способ.

Смежные вопросы