有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java资源使用远离目录树的文件

我有一个新手Java问题

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

不管怎样,在检查这些测试后,我们的SVN经理希望保持。java文件位于树的一部分,资源(如XML文件和必需的JAR)位于树的另一部分

所以,我的测试最初引用的XML文件具有相对路径,但现在不起作用

我的问题是:

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

共 (2) 个答案

  1. # 1 楼答案

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

    以下是一个配置示例:

    source Directory is ${basedir}/src/main/java
    
    resource directory is ${basedir}/src/main/resources
    

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

    ${basedir}/target/classes
    

    测试代码针对目标目录运行。目标目录没有签入到SVN,这会让你的SVN管理员满意,而且你不必对代码进行更改

  2. # 2 楼答案

    使用类路径没有问题,标准maven项目布局如下所示:

    • src
      • 主要的
        • 爪哇
        • 资源
      • 测试
        • 爪哇
        • 资源
    • 目标
      • 班级
      • 考试班

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

    你的项目布局如何,构建如何