当前位置: 首页 > 面试题库 >

我应该在Maven项目路径中的哪个位置放置那些不被视为资源的配置文件

农星华
2023-03-14
问题内容

我有一个简单的java
maven项目。我执行时的一个类需要从类路径中加载xml配置文件。我不想在生成jar时打包此类xml文件,但我想在conf子文件夹下的zip程序集中包含默认的xml文件,并且我也希望此默认xml在单元测试中可用以对其进行测试。

如我所见,此默认xml有2个可能的位置:

  1. src/main/resources/conf/default.xml
  2. src/main/conf/default.xml

两种解决方案都需要特殊的pom动作:

  • 在解决方案1中,我在构建过程中将自动副本复制到目标文件夹,这意味着它可以在测试中使用,但是我也将其复制到不需要的生成的jar中。

  • 在解决方案2中,我可以根据需要获取jar(不含xml),但是我必须手动将xml复制到目标文件夹以进行测试。(我不想在测试类路径中添加src的子文件夹。我认为这是不好的做法)。

问题:两者的最佳解决方案是什么?
-如果正确的是2,将其复制到目标文件夹的最佳方法是什么?
-是否有其他解决方案比这两种解决方案更好和更常见?

我也阅读了我[应该在哪里将Maven项目的应用程序配置文件放置在哪里?但是我想从“基于配置的约定”的角度了解最“正确的解决方案”,并且此链接提供了一些配置类型的解决方案,但没有任何约定。也许没有,但是我还是要问。所提供的解决方案包括AntRun插件和appAssembler插件,我想知道是否可以不使用它们。


问题答案:

问题是两者的最佳解决方案是什么?如果正确,则为2,将其复制到目标文件夹的最佳方法是什么?有没有其他解决方案比这两个更好,更常见?

由于您希望将该文件复制到该target/classes文件夹中,因此可以将它以某种方式视为资源(因此可以放在下面src/main/resources或声明src/main/conf为资源目录)。而且,如果您不希望在最终的jar中使用它,请将Maven
JAR插件
配置为排除它:

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <excludes>
            <exclude>**/conf/*</exclude>
          </excludes>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

对于程序集零件,程序集描述符非常灵活,因此无论选择什么,都应该可以实现所需的内容。我建议尽管使用最简单的设置。



 类似资料:
  • 最近,我开始使用spring boot,我正在尝试将我的旧spring项目转换为使用它,所有这些项目都是web应用程序。我设法编译、打包和运行应用程序,但当我尝试在浏览器中访问它们时,我无法访问我的视图。 首先,我尝试将jsp页面放在通常的文件夹src/main/webapp/WEB-INF/jsp中,但在从官方留档中阅读本文后: http://docs.spring.io/spring-boot

  • 问题内容: 我应该将Maven 2项目放在哪里,以便将Maven放在目标EAR工件中? 问题答案: 本应打包在最终EAR的目录下(旁标准)。 使用Maven EAR插件, 额外文件要包含在EAR中 的默认位置(可以使用参数控制)是。因此,以下操作将起作用(使用默认值):

  • 我创建了一个简单的Maven项目,没有原型,一切都很好。然后我添加了一个CVA。主/资源目录下的pmml文件。之后,我想读取该文件,但得到了FileNotFoundException。我尝试了以下方法: 方法一: 方法二: 方法3: 方法四: 它们都不起作用。有什么建议吗? 以下是项目结构的屏幕截图:

  • 我想将我的IntelliJ配置文件保留在我的dotfiles repo中,但我的文件夹重量>1.3g:( 仍然重量>215米... 包含大量二进制文件...不是dotfiles的最佳候选项:(

  • 问题内容: 我已经在Eclipse中创建了一个新项目,并且想要包含ANTLR jar文件。 在项目中引用jar文件之前,通常将它们放置在哪里?您是在eclipse中创建“源目录”还是常规的“目录”?然后您从那里引用它们吗? 我希望能够轻松地传输该项目,而不必在我的项目文件夹外声明对jar文件的引用,但是我不确定Java世界中的常规约定是什么。 任何指导将不胜感激。 问题答案: 我通常创建一个/ l