java从文件夹加载文件,但项目是一个模块

时间:2015-08-04 09:06:41

标签: java maven

我有一个包含5个模块的maven项目父项目

public static main 位于第一个模块中。

第一个模块调用第五个模块。第五个模块从文件夹加载文件。所有事物的共鸣是:

module1
module2
module5
     config(this folder)
         plugings.xml (this file)

在第五个模块中,我想加载plugins.xml,我在这里:

String configPath = System.getProperty("moquette.path", null);

File filePluginsConfiguration = new File(configPath,
                "config/plugins.conf");
        if (!filePluginsConfiguration.exists()) {
            LOG.warn(String
                    .format("parsing not existing file %s, so fallback on default plugin configurations!",
                            filePluginsConfiguration.getAbsolutePath()));

我知道这不正确,因为moquette.path指向一个不同的文件夹。但我不知道如何将其指向我的plugins.xml文件

你可以帮忙吗

2 个答案:

答案 0 :(得分:0)

您可以将module5配置文件夹复制到类路径中。

Maven 中,您可以使用maven-resources-plugin来执行此操作:

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
              <resources>          
                <resource>
                  <directory>module5/config</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>

答案 1 :(得分:0)

在某些情况下,类路径中的文件比文件系统中的文件更有用和模块化。

将文件放在`src / main / resources / some / package / plugins.conf'中,然后使用Guava资源类来访问它(有一个更详细的直接JRE替代方案)。

 URL url = Resources.getResource("/some/package/plugins.conf");
 String text = Resources.toString(url, Charsets.UTF_8);

或者使用Resources类的其他方法获取流或阅读器。在任何情况下,文件都可以“存在”模块(a)中并在模块(b)中使用。