2014-12-26 5 views
0

Я планирую проект с несколькими модулями maven.Многомодульные проекты и maven central

Родитель ПОМ определяет два модуля, А и В

  • Модуль A должен быть исполняемым из командной строки, чтобы показать AWT JDialog.
  • модуль B будет нормальная баночкой которого 12-нечетного зависимость загружается клиентом (т.е. не упакован)
  • модуль B должен зависеть от модуля А.
  • Хочет, чтобы банки как можно для распространение на Maven Central.

Мои вопросы:
1. Является многопрофильным модуль Maven проекта правильный подход для достижения этих целей?
2. Должны ли оба модуля быть опубликованы отдельно для maven central?

+0

Что я не понимаю, так это ваш модуль b где зависимости загружаются клиентом? Конечный пользователь вашего AWT JDialog? Вы должны создать готовые к использованию артефакты для пользователя, такие как zip-архив, который можно загрузить, и просто запустить его ... – khmarbaise

+0

Модуль A содержит методы, которые не только нужно вызывать из формы AWT (для записи файла лицензии), но также из модуля B, когда он выполняется. –

ответ

1

Это похоже на типичный сценарий для многомодульной сборки.

. 
├── mod-a 
│   └── pom.xml 
├── mod-b 
│ └── pom.xml 
└── pom.xml (parent) 

Родитель содержит просто список модулей (два), который выглядит примерно так:

<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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>com.soebes.smpp</groupId> 
    <artifactId>smpp</artifactId> 
    <version>0.7.1</version> 
    </parent> 

    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <name>Project : Parent</name> 

    <scm> 
    Define the SCM information here... 
    </scm> 

    <modules> 
    <module>mod-a</module> 
    <module>mod-b</module> 
    </modules> 

</project> 

Каждый ребенок должен выглядеть примерно так:

<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> 

    <parent> 
    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    </parent> 

    <name>Project : Mod-A</name> 
    <artifactId>mod-a</artifactId> 

</project> 

И модульно b должно выглядеть так:

<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> 

    <parent> 
    <groupId>com.soebes.training.first</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    </parent> 

    <name>Project : Mod-B</name> 
    <artifactId>mod-b</artifactId> 

    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>mod-a</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    </dependencies> 

</project> 

Теперь вы можете построить из родительского модуля, и все это должно быть развернуто в центре, и нет необходимости делать это отдельно, вы можете сделать это за один раз от родителя ...

+0

Я создал проект multi-maven с 2 модулями, как я описал в своем первоначальном вопросе. Компилирует и строит. Размеры намного меньше. Запускается модуль A AWT. Последующие вопросы, которые у меня есть: 1. Будут ли методы в модуле А успешно выполняться по сценарию, где они должны быть вызваны из модуля B из проекта клиента? 2. Зависит ли клиент от обоих модулей или только от родителя? –

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