Подтвердить что ты не робот

Maven: создать структуру каталогов из pom.xml

У меня есть файл Maven pom.xml(скопированный из другого проекта и адаптированный), и я хотел бы создать структуру каталогов для нового проекта. Какая команда может это сделать?

Обратите внимание, что в Интернете я нашел множество примеров, объясняющих, как использовать mvn archetype: create для создания файла pom.xml и структуры каталогов, но у меня уже есть pom.xml, и я хотел бы создать каталоги на основе этого, без указания groupId, artifactId и т.д. в командной строке.

mvn archetype: create-from-project также создает pom.xml на основе другого pom.xml(?), но мне просто нужны каталоги. Заранее благодарю вас!

EDIT: Я знаю, что это не "большая проблема", потому что я могу создать каталоги вручную:) Я делал это уже много раз, и я всегда чувствовал, что должен быть более умный способ сделать это...

4b9b3361

Ответ 1

Не звучать снисходительно, но:

mkdir -p src/main/java
mkdir -p src/main/resources
mkdir -p src/test/java
mkdir -p src/test/resources

(или не стесняйтесь заменять разные каталоги).

Я не знаю никакой команды maven, которая создаст эту структуру для вас, не создавая новый файл pom.

Ответ 2

Я согласен, что должен быть способ указать, что сам maven должен посмотреть на мой pom и создать из него структуру project/dir. Я не знаю, как это сделать, но вот что я делаю:

Шаг 1: переместите уже созданный pom.xml в другое место (maven будет жаловаться, если у вас уже есть его в каталоге, где вы будете запускать следующую команду)

Шаг 2: из командной строки в новом каталоге проекта maven выполните:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=my.package.path -DartifactId=myartifact

Вам нужно отредактировать groupId и artifactId, чтобы соответствовать вашему pom (sigh), но это создает основную структуру каталогов для вас и класс Java по умолчанию и Unit test.

Шаг 3: переместите/скопируйте pom.xml в этот каталог проекта

Шаг 4: запустите некоторую команду maven, например mvn clean package или mvn dependency:tree, чтобы начать загрузку зависимостей

Примечание. Я включаю этот ответ, потому что некоторые из предыдущих ответов рекомендуют использовать mvn archetype:create, но, согласно веб-сайту maven эта цель устарела в пользу использования generate. И я хотел показать, как сделать это независимо от любых плагинов IDE или IDE.

Ответ 3

Мне кажется, что вы делаете большую проблему из маленького.

Я бы попытался использовать mvn archetype:create-from-project... и просто заменил сгенерированный POM файл на исходный.

И как утверждает Питер Лори, многие современные IDE способны создавать структуру проекта Maven.

Ответ 4

По аналогии с ответом Мэтта на эти строки будет создана структура папок maven по умолчанию в ОС Microsoft Windows. Запустите их из каталога, в котором находится ваш pom.xml:

mkdir -p src/main/java
mkdir -p src/main/resources
mkdir -p src/test/java
mkdir -p src/test/resources

Интересно, почему нет команды Maven для этого. Вы можете либо запустить команды mkdir выше, либо использовать вместо этого архетип, т.е. быстрый старт. В коробке уже есть структура папок.

Ответ 5

Используйте плагин Maven Build Helper. Использование довольно простое. Просто настройте в разделе плагинов вашего pom и вызовите соответствующие mvn цели.

Из документации:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.10</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

Ответ 6

Maven может сгенерировать его для вас с помощью артефакта quickstart:

mvn archetype:generate \
    -DgroupId=com.mydomain \
    -DartifactId=my-project \
    -DarchetypeArtifactId=maven-archetype-quickstart

Затем скопируйте и вставьте существующий pom.xml в тот же каталог, что и pom.xml, который был сгенерирован.

Ответ 7

Откройте командную строку, измените каталог на папку с pom.xml
и мимо этого в CMD:

echo This will create all required folders for maven project.
echo creating  Application\Library sources
MD "src\main\java"
echo creating  Application\Library resources
MD "src\main\resources"
echo creating  Resource filter files
MD "src\main\filters"
echo creating  Web application sources
MD "src\main\webapp"
echo creating  Test sources
MD "src\test\java"
echo creating  Test resources
MD "src\test\resources"
echo creating  Test resource filter files
MD "src\test\filters"
echo creating  Integration Tests (primarily for plugins)
MD "src\it"
echo creating  Assembly descriptors
MD "src\assembly"
echo creating  Site
MD "src\site"

Ответ 8

Я использую этот однострочник:

touch pom.xml && mkdir -p src/main/java && mkdir -p src/main/resources && mkdir -p src/test/java && mkdir -p src/test/resources

Он также создает пустой файл pom.xml. Для быстрого доступа я поместил это в свои заметки. Кроме того, это похоже на ответ @Matt.