gpt4 book ai didi

java - 为什么将eclipse项目源目录中的xml文件复制到target/classes目录中?

转载 作者:行者123 更新时间:2023-12-02 04:31:16 25 4
gpt4 key购买 nike

我在 eclipse 项目的源目录中有 xml 文件,例如:

src/java/main/com/xx/zz.xml

1.使用eclise自动构建时,xml文件会被复制到target/classes中。

2.使用“mvn complie”时,xml 文件不会复制到目标/类。

对于第二种情况,我发现了这个:why xml files in eclipse project's source directory is not copied to target/classes directory?

但对于第一种情况,我找不到任何文档。有人可以帮我解释一下吗?

谢谢!

最佳答案

Eclipse 的工作方式与独立的 Maven 有很大不同。 Maven 使用 JDK 中的 javac。默认情况下,javac 仅处理 .java 文件,并在与 .java 源相同的目录中生成 .class 文件。 Maven 要求它在单独的目录中生成类,而 javac 仅将 .class 文件移动到那里。

这样做的原因是 javac 为您提供了比大多数开发人员更多的自由来组织源文件。例如,javac 并不关心您的类是否位于模仿声明的包的文件夹结构中。您可以通过将多个 .java 文件与 .properties.xml 等其他文件放在同一文件夹中来将模块放在一起。您的 .java 文件可以有不同的包声明。例如,您可以拥有文件 A.java:

package aaa.bbb;
class A {}

和B.java:

package zzz.uuu;
class B {}

如果您要求 javac 将类放入目标目录中,它将为 .class 文件创建必要的子文件夹,这将类似于包结构。但是,它不能对属性和 xml 文件执行此操作,因为它们不包含包声明。这种“资源”管理留给构建工具。

Maven 希望您将此类资源放在另一个源文件夹(资源)中。它们将被复制到生成的包结构中,因此您应该在资源文件夹中匹配它。这就是为什么它不会复制源文件夹中的非 java 文件。

Eclipse 希望您将 .java 文件放入目标包结构中,如果您的包声明未反射(reflect)文件的相对路径,Eclipse 会发出警告。与纯粹的 javac 相比,这是您自由度较低的地方。由于这条规则,它可以将资源与 .class 文件一起复制,并且不需要另一个“资源”文件夹。

您可以将 Eclipse 配置为使用源文件夹作为输出文件夹。在这种情况下,Eclipse 将不会接触资源。

关于java - 为什么将eclipse项目源目录中的xml文件复制到target/classes目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com