1

我正忙于为自定义注释处理器编写集成测试。为了做到这一点,我有一组特定的 .java 源文件,我通过 javac 运行以测试我的实现。这些是由我的测试作为资源加载的。这意味着我的源代码树如下所示:

/src
  /test                            [test source root]
    /java
      MyIntegrationTest.java       [actual source code]
    /resources
      MyIntegrationClassFile.java  [should be treated as plain text]

使用 IntelliJ,可以使用编译器设置过滤作为资源复制的文件。所以我删除了 .java 文件的过滤器。

但是,对于要复制的资源,它们需要位于标记的源树中。我还将资源文件夹标记为测试源(是的,这很奇怪)。

这就是问题所在:如果 .java 文件在源代码树中(以便作为资源复制),它们会被自动编译。我不想编译这些文件(它们可能无法编译)。

我尝试将资源添加到编译器排除列表(不将其从项目中排除),但这也会导致资源未被复制。

据我所知,您不能将 .java 文件标记为纯文本,即使此功能已针对其他文件类型进行了记录。

如何将 .java 文件标记为应该复制而不是编译的纯内容?

4

2 回答 2

1

对我来说,当我将资源文件夹添加到编译器排除列表时它起作用了。

最初设定:

在此处输入图像描述

重建项目给了我这个输出:

在此处输入图像描述

现在我添加src/test/resources到编译器排除列表:

在此处输入图像描述

重建后,我的输出文件夹中有这个:

在此处输入图像描述

于 2013-10-09T07:02:13.420 回答
0

使用 Idea 2016.3.3,转到 Project Structure>src>test>resources,然后右键单击它并选择 TestResources。

然后为您的资源文件夹添加排除规则到 Settings>Build, Execution, Deployment> Compiler> Excludes。

还要从 Settings>Build, Execution, Deployment> Compiler>Resource patterns 中删除 .java 扩展名(正如我所见,你已经这样做了)。

有用!

于 2017-02-15T11:45:04.360 回答