Как настроить Maven Archetype для создания проекта модуля на том же уровне, что и родительский проект? - PullRequest
1 голос
/ 11 июля 2020

Я хочу создать архетип 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>

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

1 Ответ

0 голосов
/ 13 июля 2020

См. ответ на Ошибка при установке многомодульного архетипа, созданного с помощью 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 Plugin, расширенное использование / создание архетипа .

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