如何从 jar 文件中排除属性文件?

2024-04-15

我有一个具有以下项目结构的java应用程序:

myProject
  |
  |----src
  |     |
  |     |--main
  |     |
  |     |--resources
  |           |   
  |           |--userConfig.properties
  |           |--log4j.properties
  |
  |---target

我在用Maven构建我的项目。我在用maven构建jar文件的命令如下:

mvn package -DMaven.test.skip=true

我想排除userConfig.properties我的 JAR 文件中的文件,所以我更新了我的pom.xml如下:

<excludes>
    <exclude>**/userConfig.properties</exclude>
</excludes>

但它会从编译代码所在的目标文件夹中排除。 并且应用程序将无法运行,因为它无法找到userConfig.properties file.

谁能帮我?


我也遇到过这种场景。基本上,您希望能够使用一些工具从 Eclipse 本地运行代码用户配置属性易于访问的文件,例如内部/src/main/resources。此外,您希望提供一个已编译的可执行 JAR 以及外部用户配置属性允许用户在不破解 JAR 的情况下配置应用程序。

我的实现如下:运行mvn clean install will:

  • 使用指定的创建可执行 JARmainClass
  • 排除所有.properties文件位于src/main/resources从 JAR 中
  • 将项目依赖项复制到lib项目根目录中的文件夹
  • 全部复制.properties文件位于src/main/resources into a conf项目根目录中的文件夹。请注意,此步骤是一个可选步骤,可为 JAR 用户提供便利。您可以要求在conf目录。这conf目录通过清单有效地添加到您的运行时类路径中。
  • 添加这个conf文件夹到清单,提供从可执行 JAR 对其的访问

在 POM 配置中结合使用这些 Maven 插件将为您提供所需的功能。至于该解决方案的“最佳实践”;我不知道。

Using maven 依赖插件如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/lib</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>false</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
      </configuration>
    </execution>
  </executions>
</plugin>

Using maven-jar-插件如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <excludes>
      <exclude>**/*.properties</exclude>
    </excludes>                    
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <mainClass>package.path.to.your.main.class.MainClass</mainClass>
      </manifest>
      <manifestEntries>
        <Class-Path>conf/</Class-Path>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

Using maven-资源-插件如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.3</version>
  <executions>
    <execution>
      <id>copy-resources</id>
      <phase>install</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${basedir}/target/conf</outputDirectory>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <includes>
              <include>**/*.properties</include>
            </includes>
          </resource>
        </resources>
      </configuration>
    </execution>
  </executions>
</plugin>

使用此项目设置,我可以使用一个配置在 Eclipse 中运行,并为我的用户提供一个要配置的属性文件,而无需属性相互干扰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 jar 文件中排除属性文件? 的相关文章

随机推荐

  • 如何简单地解析没有指定年份的日期?

    我有一个工具 它似乎可以给我日期 但没有指定我需要转换的年份 并且我正在使用 Java 来完成任务 实际上是 Groovy 但在本例中足够接近 示例日期是 13 Dec 12 00 00 它应该指的是 12 13 2011 因为年份未指定
  • HTML 俄语

    我必须设计一个俄语版本的网站 我从翻译那里得到文本 我把它复制到Dreamweaver的代码中 但它不起作用 我有平常的头 我应该怎么办 您应该将文件的编码更改为 UTF 8 您可以执行此过程 当您Save As文件在记事本中或者您可以使用
  • OpenSSL 上的 EVP_DecryptFinal_ex 错误

    我正在使用 OpenSSL EVP 例程使用 AES 128 cbc 模式进行解密 我使用 NIST 站点指定的测试向量来测试我的程序 该程序似乎在 EVP DecryptFinal ex 例程处失败 谁能告诉我有什么问题吗 另外 我如何在
  • 处理 Swift 2 中异步闭包错误的最佳方法?

    我使用了大量的异步网络请求 顺便说一句 iOS 中的任何网络请求都需要异步 并且我正在寻找更好的方法来处理来自 Apple 的错误dataTaskWithRequest哪个不支持throws 我有这样的代码 func sendRequest
  • 创建名称为“securityConfig”的 bean 时出错:自动装配依赖项注入失败

    我正在尝试结合 Java config 和 xml config 进行 Spring 安全身份验证 但我收到一个错误 创建名称为 securityConfig 的 bean 时出错 自动装配依赖项注入失败 我的代码似乎有什么问题 一直在谷歌
  • 无法在 Ubuntu 上的 PyCharm 上启动终端

    我想运行一段代码 为此 我在我的 Ubuntu 机器上安装了 PyCharm 现在 当我打开 PyCharm 应用程序并尝试打开终端时 它会抛出错误并且不会打开终端 java io IOException Exec tty错误 未知的pyc
  • 管理面板中的 django choicefield 过滤器

    默认情况下 django 管理员list filter提供型号选择中所有可用的过滤器 但除了那些我还想要一个过滤器 我们可以说它是 无 过滤器 class Mymodel char choice field choices 1 txt1 2
  • 18M+行表的子查询和MySQL缓存

    由于这是我的第一篇文章 我似乎只能发布 1 个链接 因此我在底部列出了我所指的网站 简而言之 我的目标是让数据库更快地返回结果 我尝试包含尽可能多的相关信息 以帮助在帖子底部提出问题 机器信息 8 processors model name
  • 在 Snowflake 的公共表表达式中使用“match_recognize”

    更新 已回答here https stackoverflow com questions 68544567 match recognize with cte in snowflake 68550312 68550312 我正在将一个有点复杂
  • 如何找到逻辑回归模型特征的重要性?

    我有一个通过逻辑回归算法训练的二元预测模型 我想知道哪些特征 预测变量 对于正类别或负类别的决策更重要 我知道有coef 参数来自 scikit learn 包 但我不知道它是否足够重要 另一件事是我如何评估coef 值对于消极类和积极类的
  • 在 R 中:带有向量变量的子集或 dplyr::filter

    df lt data frame a LETTERS 1 4 b rnorm 4 vals lt c B D 我可以过滤 子集df值在val with dplyr filter df a in vals subset df a in val
  • 将上三角矩阵转换为对称矩阵的快速方法

    我有一个上三角矩阵np float64值 像这样 array 1 2 3 4 0 5 6 7 0 0 8 9 0 0 0 10 我想将其转换为相应的对称矩阵 如下所示 array 1 2 3 4 2 5 6 7 3 6 8 9 4 7 9
  • Python:如何获取仅出现在一组列表中的一组中的项目?

    我想创建一个函数 它接受一个或多个集合的列表 并查找列表中所有集合的对称差异 即结果应该是一组值 每个值仅包含在其中一个值中套 如果我对对称差异的理解是错误的 请纠正我 例如 gt gt gt s1 set 1 2 3 gt gt gt s
  • 如何将Java项目导入到Eclipse中?

    我试图导出一个 Java 项目 我可以使用选项 Export gt Java gt JAR file 创建 JAR 文件 我无法将此 jar 文件导入到 Eclipse 中 没有 java 的导入选项 我在这里做错了什么吗 使用面向 Web
  • 使用系列查找表替换 Pandas DataFrame 列中的值

    我想用我准备的系列形式的查找表生成的更准确 完整的一组值替换 DataFrame 中的一列值 我以为我可以这样做 但结果并不如预期 这是我要修复的数据框 In 6 df normalised head 10 Out 6 code name
  • 我的代码中某处存在无限循环

    我有这个 Java 游戏服务器 最多可处理 3 000 个 tcp 连接 每个玩家或每个 tcp 连接都有自己的线程 每个线程的运行情况如下 public void run try String packet char charCur ne
  • 使用 Linq 按可变整数范围进行分组

    我试图根据整数的范围对一组数据进行分组 范围不以固定间隔增加 例如我有 商品编号 价格1 102 303 504 120 我想将价格为 0 10 11 100 和 100 500 的商品分组 因此 项目 1 在 A 组中 项目 2 3 在
  • tkinter 中从右到左的文本

    我使用的是 RTL 语言 并且我需要我的文本为 RTL 有办法做到吗 我怎样才能证明我的文字合理 例子 from tkinter import from tkinter constants import root Tk text Text
  • 使用 Fetch API 来 POST XML

    我正在尝试使用 Fetch API 来处理 XML 数据的 POST 以避免 XmlHttpRequest 的跨域问题 我面临的问题是 尽管将我的 Content Type 设置为 text xml 在本例中这是唯一受支持的内容类型标头 但
  • 如何从 jar 文件中排除属性文件?

    我有一个具有以下项目结构的java应用程序 myProject src main resources userConfig properties log4j properties target 我在用Maven构建我的项目 我在用maven