Как настроить Maven Archetype для создания проекта модуля на том же уровне, что и родительский проект?

Я хочу создать архетип maven, который должен генерировать проекты дочерних модулей на том же уровне, что и родительский проект. Итак, структура будет выглядеть так:

- parent
   |_ pom.xml
   |_ <rest-of-the-files>
- child1
   |_ pom.xml
   |_ <rest-of-the-files>
- child2
   |_ pom.xml
   |_ <rest-of-the-files>

Родительский pom.xml будет иметь такие модули, как -

<modules>
    <module>../child1</module>
    <module>../child2</module>
</modules>

Есть ли способ добиться этого?


person Vishal Pawar    schedule 11.07.2020    source источник


Ответы (1)


См. ответ на Ошибка установки многомодульного архетипа, созданного с помощью mvn archetype:create-from-project:

Похоже, плагин архетипа не поддерживает плоскую компоновку для многомодульных проектов.

Вы можете использовать следующий (согласитесь, немного громоздкий) обходной путь:

  1. Создавайте свои проекты как:

    +- parent
       +- pom.xml
       +- ...
       |
       +- child1
       |  +- pom.xml
       |  +- ...
       | 
       +- child2
          +- pom.xml
          +- ...
    
  2. Создайте еще один проект в parent/src/main/resources:

    +- parent
       +- pom.xml
       +- ...
       +- src
          +- main
             +- resources   
                +- pom.xml
    

    с POM, например:

     ...
     <artifactId>move-modules</artifactId>
     ...
    
     <build>
         <plugins>
             <plugin>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <version>3.0.0</version>
                 <executions>
                     <execution>
                         <phase>initialize</phase>
                         <configuration>
                             <target>
                                 <echo level="info">Moving modules...</echo>
                                 <move file="../../../../child1" tofile="../../../../../child1" failonerror="false" />
                                 <move file="../../../../child2" tofile="../../../../../child2" failonerror="false" />
                             </target>
                         </configuration>
                         <goals>
                             <goal>run</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
     </build>
    
  3. Создайте, установите/разверните и используйте свой архетип в соответствии с плагином Maven Archetype. , Расширенное использование/создание архетипа.

  4. new/project/created/above/src/main/resources/move-modules $ mvn initialize

  5. Адаптируйте <module>s в своем parent POM:

     <modules>
         <module>../child1</module>
         <module>../child2</module>
     </modules>
    
    
person Gerold Broser    schedule 13.07.2020