Отфильтрованный выполнимый жирный.jar в maven с плагином maven-assembly-
В настоящее время я перемещаю небольшой проект в Maven, и у меня возникли некоторые проблемы.
Установка выглядит следующим образом
Где файл настроек используется в моей папке ресурсов для запуска приложения в Eclipse. Но когда я создаю толстую банку, файл настроек упаковывается в боковую банку. Я хочу отфильтровать файл настроек так, чтобы он находился за пределами jar (я понимаю, что это делает файл хрупким, но это из-за дизайна), и все же он доступен для приложения из той же папки, что и jar. Я достиг этого с помощью jar-файла Eclipse и Ant-файла. Но я не могу заставить его работать с Maven. Любое ваше понимание было бы очень полезно.
Ее примеры моего плагина и файла фильтра. Любые идеи по этому поводу были бы великолепны, так как это сводило меня с ума
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<filters>
<filter>src/assambly/filter.properties</filter>
</filters>
<archive>
<manifest>
<mainClass>ie.business.project.artifact</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
и мой фильтр
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>distribution</id>
<formats>
<format>jar</format>
</formats>
<files>
<file>
<source>settings.ini</source>
<outputDirectory>/</outputDirectory>
<filtered>true</filtered>
</file>
</files>
</assembly>
2 ответа
Так что я устал от чего-то другого. Если я определю исключение в своем jar-плагине в дополнение к использованию maven-Assemblyy, доза файла настроек не будет в конечном итоге в жировой банке. Я не уверен, что это правильный способ сделать это, но это сработало.
Пожалуйста, дайте мне знать, если есть лучший способ сделать это.
Я добавил следующий плагин к моей поме
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>setting.ini</exclude>
</excludes>
</configuration>
</plugin>
Похоже, вы не используете плагин сборки, указывающий на сборку в вашем вопросе. Если вы посмотрите на конфигурацию плагина, которую вы используете:
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
На самом деле вы должны указывать на относительный путь файла сборки, например:
<configuration>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
Теперь необходимо изменить файл сборки для создания толстой банки, чтобы создать толстую банку и исключить некоторые файлы. Этот пример просто чтобы дать вам представление:
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>${basedir}</directory>
<excludes>
<exclude>settings.ini</exclude>
</excludes>
</fileSet>
</fileSets>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>