1

我有一个新手 Java 问题。

我必须为我们在 SQL Server 中使用的一些存储过程制作一套 J/DBUnit 测试。这些测试在我最初放置在与我的 Java 项目相同的目录中的几个子目录中使用一些 XML 文件。

无论如何,在签入这些测试后,我们的 SVN 管理器希望将 .java 文件保留在树的一部分中,并将资源(如 XML 文件和所需的 JAR)保留在树的另一部分中。

因此,我的测试最初使用相对路径引用了 XML 文件,但现在不起作用。

我的问题是:

  1. 我可以通过 CLASSPATH 使包含我的 XML 文件的目录可用(我希望如此)。
  2. 假设可行,我如何在我的代码中引用以这种方式包含的文件?
  3. 如果我不应该为此使用 CLASSPATH,我愿意接受其他解决方案。
4

4 回答 4

3

忘记类路径。为您的测试提供一个参数/配置,该参数/配置定义了 XML 文件的相对路径的根目录。

于 2012-07-26T20:13:00.910 回答
2

使用classpath没问题,标准的maven项目布局如下:

  • 源代码
    • 主要的
      • 爪哇
      • 资源
    • 测试
      • 爪哇
      • 资源
  • 目标
    • 班级
    • 测试类

编译器将 src/main/java 编译为 target/classes,将 src/main/resources 的资源复制到 target/classes 文件夹,测试类似。如果测试有一个包含类和测试类的类路径,那么一切正常。

您的项目布局如何,如何构建?

于 2012-07-26T20:37:34.433 回答
1

不,您不应该在这种情况下使用 CLASSPATH,因为它是由 Java 使用的。但是,您可以通过从环境变量或配置文件中加载一个值来使用类似的方法,该值指示存储 XML 文件的目录。

于 2012-07-26T20:15:53.210 回答
0

您可以在不更改类路径的情况下执行此操作。想法是将资源文件存储在单独的目录中,但在运行构建过程时将它们复制到类路径中的目录中。

这是一个示例配置:

source Directory is ${basedir}/src/main/java

resource directory is ${basedir}/src/main/resources

在您的构建脚本中,将.java 文件和资源文件 ( .xml) 复制到类路径中的目录中,例如:

${basedir}/target/classes

您的测试代码针对目标目录运行。目标目录未签入 SVN,让您的 SVN 管理员满意,并且您不必更改代码。

于 2012-07-26T20:38:52.027 回答