使用Maven创建WAR时包含外部配置文件夹

时间:2017-08-16 20:04:09

标签: maven

我在项目基目录中有config文件夹。当我试图建立战争时,文件夹没有被添加到war文件中。我有外部jar使用此文件夹来读取log4j.properties。

Inisde Jar代码:(“config / log4j.properties”)

当我尝试访问tomcat服务器中的应用程序时,我找不到config / log4j.properties路径。

当前文件夹结构

项目   --src /主/   --src /测试   --src /资源   --lib   --config(在config log4j.properties中)    --target

在lib文件夹里面我有一些自定义jar,我在我的war文件中添加了maven插件。 log4j属性的自定义jar读取配置文件夹。这是springboot app.when我试图通过eclipse运行应用程序的工作文件。但是当我试图建立一个战争并在tomcat上手动部署战争然后它失败了。我是不知道我应该把这个配置文件夹放在哪里,以便自定义jar可以读取它。

1 个答案:

答案 0 :(得分:0)

当你采用它的约定时,Maven倾向于,但是当你不采用它时,你可能会发现事情停止了。 所以,我的建议是根据Maven Standard Directory Layout来构建项目。

鉴于此项目结构:

src
 |   |-- main
 |   |   |-- resources
 |   |   |   |-- config
 |   |   |   |   | -- log4j.properties

默认情况下,Maven WAR插件会使用以下内容创建WAR:

WEB-INF
 |   |-- ...
 |   |
 |   |-- config
 |   |       -- log4j.properties     

因此,任何试图从类路径加载config / log4j.properties的东西都会找到log4j.properties文件

如果您真的无法将config文件夹移动到src/main/resources,那么您可以使用Maven WAR插件add an external resource,例如:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
      <webResources>
        <resource>
          <directory>config</directory>
          <targetPath>WEB-INF/config</targetPath>
        </resource>
      </webResources>
    </configuration>
  </plugin>

这会导致log4j.properties被复制到WAR中的WEB-INF/config,即最终结果,就好像您将config从项目的根目录移动到{{} 1}}。