У меня есть сборка муравья, которая просто генерирует банку, полную HTML-страниц. я хотел бы сделать то же самое с maven. Я сейчас копирую файлы в новую папку, но файлы не добавляются в последнюю банку. когда я запускаю команду jar tf mavenjar.jar
Я не вижу файлов, перечисленных в моем терминале. это выглядит так:
кликните сюда
когда я запускаю ту же команду на созданном муравьем банке, я вижу следующее:
кликните сюда
вот мой пом
<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>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>${basedir}/moveTheseFiles</directory>
<targetPath>${basedir}/newFileLocation</targetPath>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
любая идея о том, что мне может не хватать, чтобы включить перемещенные файлы в jar?




Этого можно добиться двумя способами. Следование соглашению важнее конфигурации - или его настройка.
Соглашение важнее конфигурации
Самый простой способ скопировать статические файлы в вашу банку - использовать папку по умолчанию src/main/resources. Все файлы, которые вы добавляете туда, будут добавлены в ваш файл jar. Ваш pom.xml можно свести к следующему:
<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>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
</build>
</project>
Папка не по умолчанию
Когда вам действительно нужно разместить файлы в другой папке, с вашей конфигурацией почти все в порядке. Отсутствует только часть includes. Вы должны указать maven включить все файлы в указанную папку.
<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>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>moveTheseFiles</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
Примечание: Похоже, вы хотите создать веб-приложение. Может быть, вы хотите создать файл war. Для этого вы можете просто установить
<packaging>war</packaging>
в вашем pom.xml. Тогда все веб-ресурсы (HTML-страницы, CSS, ...) должны находиться в src/main/webapp и будут скопированы в корневую папку войны. Имейте в виду, что файлы в src/main/resources будут скопированы в WEB-INF/classes в результате войны.
я действительно получил его работу после этого решения: Создайте zip в maven с дополнительными файлами рядом с банкой
Я создал файл bin.xml в этом месте src / main / assembly. bin.xml выглядит так
<assembly xmlns = "http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>bin</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>${basedir}/dist/newLocation</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
а мой pom.xml выглядит так:
<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>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>${basedir}/WWW</directory>
<targetPath>${basedir}/dist/newLocation</targetPath>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/bin.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
в терминале я запускаю
mvn clean package
cd target
jar tf mavenjar.jar
и результат выглядит так: кликните сюда
Если вы решили свою проблему с помощью этого решения, вы можете принять его, нажав зеленую галочку. Это говорит другим пользователям, что это решение сработало для вас, и легче понять, что вам не нужна дополнительная помощь с этой проблемой.