标准 Maven 目录布局中的外部文件目录
Directory for external files in the standard maven directory layout
在 Java 中,我们有两种不同的方法将数据加载到应用程序中。
如果一个文件被打包到 jar 中(称之为 resource 文件)我们通过 Class.getResourceAsStream()
方法得到它的 InputStream
。
如果文件不在 jar 中(称之为 外部 文件)我们使用 new FileInputStream()
.
如果我理解正确,资源和外部文件之间的区别是因为应用程序需要前者启动和 运行 正确(因此打包到可执行 jar - 不应修改),后者是可选的,用户可能提供也可能不提供。
在 the standard maven directory layout 中,我们将 resource 文件放在 src/main/resources
目录中,以便在构建项目时将它们包含在 jar 中。 但我不知道 外部 文件的正确目录是什么。
在我的应用程序的分布式版本中,我想提供一组默认的 外部 文件,因此我需要将它们放在项目结构中的某个位置。最佳位置是什么?
到目前为止,我已经看到 src/main/webapp
(这似乎不适合桌面应用程序)和 src/main/conf
(这似乎已不再使用,此外 外部 文件可能属于不同类型 - 不仅仅是文本)。
像 src/main/assets
或 src/main/data
这样的自定义目录?或者 main
和 test
旁边应该有另一个源目录?
如有任何建议,我将不胜感激!
因为是外部文件,不能放在src下,可以放在(例如)static_content下(POM.xml旁边的一个文件夹),然后把这个加进去你的 POM
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
target/static_content/csvs
</outputDirectory>
<resources>
<resource>
<directory>static_content/csvs</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
这完全不是 maven 设计的目的。
但是,有一个插件旨在使用可执行 jar 及其包装器制作部署程序集,我们使用它来执行此操作。它将您所说的外部文件视为配置文件,这些文件位于 src/main/config
.
参见 http://www.mojohaus.org/appassembler/appassembler-maven-plugin/
在 Java 中,我们有两种不同的方法将数据加载到应用程序中。
如果一个文件被打包到 jar 中(称之为 resource 文件)我们通过 Class.getResourceAsStream()
方法得到它的 InputStream
。
如果文件不在 jar 中(称之为 外部 文件)我们使用 new FileInputStream()
.
如果我理解正确,资源和外部文件之间的区别是因为应用程序需要前者启动和 运行 正确(因此打包到可执行 jar - 不应修改),后者是可选的,用户可能提供也可能不提供。
在 the standard maven directory layout 中,我们将 resource 文件放在 src/main/resources
目录中,以便在构建项目时将它们包含在 jar 中。 但我不知道 外部 文件的正确目录是什么。
在我的应用程序的分布式版本中,我想提供一组默认的 外部 文件,因此我需要将它们放在项目结构中的某个位置。最佳位置是什么?
到目前为止,我已经看到 src/main/webapp
(这似乎不适合桌面应用程序)和 src/main/conf
(这似乎已不再使用,此外 外部 文件可能属于不同类型 - 不仅仅是文本)。
像 src/main/assets
或 src/main/data
这样的自定义目录?或者 main
和 test
旁边应该有另一个源目录?
如有任何建议,我将不胜感激!
因为是外部文件,不能放在src下,可以放在(例如)static_content下(POM.xml旁边的一个文件夹),然后把这个加进去你的 POM
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
target/static_content/csvs
</outputDirectory>
<resources>
<resource>
<directory>static_content/csvs</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
这完全不是 maven 设计的目的。
但是,有一个插件旨在使用可执行 jar 及其包装器制作部署程序集,我们使用它来执行此操作。它将您所说的外部文件视为配置文件,这些文件位于 src/main/config
.
参见 http://www.mojohaus.org/appassembler/appassembler-maven-plugin/