我现在正在将一个小项目搬到Maven,我遇到了一些麻烦。
设置如下
在my资源文件夹中使用设置文件在eclipse中运行应用程序。但是当我创建一个胖罐时,设置文件被包装在罐子的一边。我想过滤设置文件,因此它在jar之外(我明白这会使文件变脆,但这是设计的)并且仍然可以从与jar相同的文件夹中获取应用程序。我用eclipse runnable jar和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>
答案 0 :(得分:1)
所以我累了别的东西。如果我除了使用maven-assembly之外在jar-plugin中定义一个排除项,那么设置文件不会在fat jar中结束。我不确定这是否是正确的方法,但它已经奏效。
如果有更好的方法,请告诉我。
我将以下插件添加到我的pom
<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>
答案 1 :(得分:0)
您的问题似乎没有使用指向程序集的程序集插件。如果你看一下你正在使用的插件配置:
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
实际上你应该指向汇编文件的相对路径,例如:
<configuration>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
现在应该更改用于创建胖jar的程序集文件来创建胖jar并排除一些文件。这个例子只是为了给你一个想法:
<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>