Как создать пустые папки с архетипом maven?
Существует существующая проблема для этого подхода, расположенная на Codehaus JIRA # ARCHETYPE-57, но все инструкции, перечисленные в этом билете, не удались для меня, Также сообщение в блоге marekdec Как получить архетип maven для создания пустых каталогов не удается для меня.
Трюк в archetype.xml
с завершающим /
не работает для меня:
<resources>
<resource>src/main/webapp/</resource>
Unable to find resource 'archetype-resources/src/main/webapp/'
Также каталог fileSet
в archetype-metadata.xml
не работает для меня:
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp/</directory>
</fileSet>
Я использую следующий maven-архетип-плагин, чтобы создать свой собственный архетип.
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:create
Есть ли другое решение? Или я что-то пропустил? Благодаря
Ответы
Ответ 1
Я сделал быстрый тест и... это сработало для меня. Во-первых, я создал архетип:
$ mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype \
-DgroupId=com.stackoverflow \
-DartifactId=Q2786966 \
-Dversion=1.0-SNAPSHOT \
Я переименовал archetype.xml
в archetype-metadata.xml
(первый для Archetype 1.0.X, позже для Archetype 2.0.X), поэтому проект выглядит следующим образом:
$ tree .
.
├── pom.xml
└── src
└── main
└── resources
├── archetype-resources
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── App.java
│ └── test
│ └── java
│ └── AppTest.java
└── META-INF
└── maven
└── archetype-metadata.xml
И archetype-metadata.xml
содержит:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="Q2786966">
<fileSets>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp</directory>
</fileSet>
<fileSet filtered="true" packaged="true">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
Затем я установил архетип и использовал его для создания проекта:
$ mvn install
$ cd ~/tmp
$ mvn archetype:generate -B -DarchetypeGroupId=com.stackoverflow \
-DarchetypeArtifactId=Q2786966 \
-DarchetypeVersion=1.0-SNAPSHOT \
-DgroupId=my.group \
-DartifactId=my-artifact \
-Dversion=1.0-SNAPSHOT
И получившийся проект выглядит следующим образом:
$ tree my-artifact/
my-artifact/
├── pom.xml
└── src
└── main
├── java
│ └── my-group
│ └── App.java
└── webapp
Здесь находится пустой каталог webapp.
Ответ 2
Я решил эту проблему, добавив следующую конфигурацию в конфигурацию сборки archetypes pom.xml.
Предполагая, что ваши файлы набора файлов архетипа-metadata.xml выглядят следующим образом:
<fileSet encoding="UTF-8">
<directory>src</directory>
<includes>
<include>**/**</include>
</includes>
</fileSet>
Добавьте это в свой pom.xml, а не тот, который включен в архетип, фактический проект pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>
Строка конфигурации xml, которая выполняет магию,
<includeEmptyDirs>true</includeEmptyDirs>
Полная конфигурация будет выглядеть следующим образом
<project ...>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>
</plugins>
</build>
</project>
Ответ 3
Я встретил ту же проблему с первым ответом на этот question. Переконфигурирование плагина maven-resources.
В соответствии с этим билетом MRESOURCES-36 должен быть элемент < includeEmptyDirs>
, но только для Maven Resource Plugin 2.3.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>