当我创建一个带有依赖项的可执行罐(使用thisGuide)时,所有属性文件也都包装到该Jar中。如何阻止它发生?谢谢 update:我尝试使用
MavenResources插件将它们排除在外,但是当我在Eclipse运行时,我的应用程序不会找到属性文件(右键单击模块 - >运行为 - > Java应用程序)update:感谢您的有用答案。我认为我最好花时间学习Maven,因为现在我只选择最简单的解决方案。
要从JAR /目标目录中排除任何文件,您可以在pom.xml文件中使用
<excludes>
.properties
通过约定,目录
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources>
</build>
包含应用程序将使用的资源。因此,Maven将把它们包括在最后的src/main/resources
。
JAR
方法访问它们,因为资源已加载在classPath中。
如果您需要将它们放在应用程序之外,请不要将它们存储在
getResourceAsStream()
中,因为它们会被Maven捆绑在一起。当然,您可以将它们排除(使用chkal给出的链接),但是最好创建另一个目录(例如
src/main/resources
)以保持有关
src/main/external-resources
目录的约定。
在后一种情况下,您必须在JAR文件时独立交付资源(可以使用汇编插件来实现)。如果您需要在日食环境中访问它们,请转到项目的
src/main/resources
Properties
,然后在Java Build Path
中添加文件夹(例如Sources
)。然后,Eclipse将在classPath中添加此目录。
这完全呼吁使用mavenjar插件
,例如,如果您想将所有内容排除在最终罐子中,请放置:
src/main/external-resources
files下方的files仍将在class-path上可用,他们只是不会在产生的jar中。
使用maven-jar-plugin创建maven jar期间的特定文件模式。
src/test/resources/
在
<build>
<plugins>
<!-- configure JAR build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<excludes>
<exclude>src/test/resources/**</exclude>
</excludes>
</configuration>
</plugin>
...
中输入这些属性文件。 src/test/resources/
中的文件可通过<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.exe</exclude>
<exclude>**/*.java</exclude>
<exclude>**/*.xls</exclude>
</excludes>
</configuration>
</plugin>
自动自动提供,但不会包含在Maven的包装罐中。
src/test/resources
中的属性文件吗?然后,您应该使用Maven-Resource-Plugin排除它们。有关详细信息,请参见以下页面:
http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html其他可能性是使用
mavenShade插件,例如排除仅在IDE中本地使用的记录属性文件:
src/test/resources
但是,这将排除每个工件中的文件,因此在每种情况下都不可行。
中使用特殊src/main/resources
创建一个自定义组件描述符。
为了在Resources文件夹中分类所有文件,最终配置看起来像: