首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么项目布局资源与Java源是分开的?

为什么项目布局资源与Java源是分开的?
EN

Stack Overflow用户
提问于 2011-01-28 16:20:57
回答 8查看 6.2K关注 0票数 20

为什么maven将资源保存在一个独立于Java源代码的“源文件夹”中?

根据我的经验,在Java中,资源文件大多被视为Java源文件,当“编译”时,只需要按类复制,最终打包到jar中,由类加载器的方法getResource/getResourceAsStream通过classpath访问。

就我个人而言,我发现将资源文件与Java源分离是一种无用的复杂性。

  1. 你认为如何?
  2. maven为什么将资源与源分离,有什么好的理由吗?
  3. 不使用src/main/resourcessrc/test/resources,并使用maven将资源保存在src/main/javasrc/test/java中,是否存在反指示?
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-28 17:42:28

现在还没有提到的一点是,您显然已经习惯于看到只有java源代码的项目。但是,如果您添加了其他源文件类型,我认为组织更有意义,例如:

  • src/main
    • 资源
    • java
    • groovy

每个子dir都有一个特定的文件分类:

  • 编译为java文件的java ->
  • 编译为groovy脚本的groovy ->
  • 资源->未编译数据用于任何..。(此外,还可以过滤这些信息以添加编译时信息)

此外(正如我在一些注释中已经指出的那样),我通常不会使资源目录变得平坦。文件可以嵌套到类似包的结构中,也可以酌情嵌套到其他子目录中(就我的组织而言)。

票数 18
EN

Stack Overflow用户

发布于 2011-02-16 17:01:09

为了简单和更容易地访问,我们还在java源路径中保留了一些资源。这为我们在GUI级别上开发速度模板时提供了方便,这些模板与Controller代码非常接近。但是,您必须告诉maven包含src/main/java中的非java内容,方法是将类似的内容添加到pom文件中。

代码语言:javascript
运行
复制
<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>
票数 10
EN

Stack Overflow用户

发布于 2013-06-15 11:25:19

你认为如何?我认为Maven背后的人应该做一点“关注点的分离”。使用Maven的首要原因是用于依赖性管理,但是为什么搅拌机要告诉我如何剥果皮呢?对我来说一点意义都没有。

maven为什么将资源与源分离,有什么好的理由吗?不是的。在java项目中,包结构的复制(不是一次,而是三次)增加了项目不必要的工作,增加了出错的风险,降低了代码的灵活性。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4830547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档