为什么maven将资源保存在一个独立于Java源代码的“源文件夹”中?
根据我的经验,在Java中,资源文件大多被视为Java源文件,当“编译”时,只需要按类复制,最终打包到jar中,由类加载器的方法getResource
/getResourceAsStream
通过classpath
访问。
就我个人而言,我发现将资源文件与Java源分离是一种无用的复杂性。
src/main/resources
和src/test/resources
,并使用maven将资源保存在src/main/java
和src/test/java
中,是否存在反指示?发布于 2011-01-28 17:42:28
现在还没有提到的一点是,您显然已经习惯于看到只有java源代码的项目。但是,如果您添加了其他源文件类型,我认为组织更有意义,例如:
每个子dir都有一个特定的文件分类:
此外(正如我在一些注释中已经指出的那样),我通常不会使资源目录变得平坦。文件可以嵌套到类似包的结构中,也可以酌情嵌套到其他子目录中(就我的组织而言)。
发布于 2011-02-16 17:01:09
为了简单和更容易地访问,我们还在java源路径中保留了一些资源。这为我们在GUI级别上开发速度模板时提供了方便,这些模板与Controller代码非常接近。但是,您必须告诉maven包含src/main/java中的非java内容,方法是将类似的内容添加到pom文件中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<directory>src/main/java</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.htm</include>
<include>**/*.html</include>
<include>**/*.css</include>
<include>**/*.js</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/log4j.xml</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
发布于 2013-06-15 11:25:19
你认为如何?我认为Maven背后的人应该做一点“关注点的分离”。使用Maven的首要原因是用于依赖性管理,但是为什么搅拌机要告诉我如何剥果皮呢?对我来说一点意义都没有。
maven为什么将资源与源分离,有什么好的理由吗?不是的。在java项目中,包结构的复制(不是一次,而是三次)增加了项目不必要的工作,增加了出错的风险,降低了代码的灵活性。
https://stackoverflow.com/questions/4830547
复制相似问题