我有一个新手Java问题。
我必须为我们在SQL Server中使用的一些存储过程制作J / DBUnit测试套件。这些测试在一些子目录中使用了一些XML文件,这些子目录最初放在与我的Java项目相同的目录中。
无论如何,在检查这些测试后,我们的SVN管理员希望将.java文件保存在树的一部分中,并将资源(如XML文件和所需的JAR)保存在树的另一部分中。
因此,我的测试最初使用相对路径引用了XML文件,该路径现在不起作用。
我的问题是:
答案 0 :(得分:3)
忘记calsspath。为您的测试提供参数/配置,该参数/配置定义XML文件的相对路径的根目录。
答案 1 :(得分:2)
使用类路径没问题,标准的maven项目布局如下所示:
编译器将src / main / java编译为target / classes,将src / main / resources的资源复制到target / classes文件夹,类似于测试。如果测试有一个包含类和测试类的类路径,那么一切正常。
您的项目布局是如何构建的?
答案 2 :(得分:1)
不,您不应在此实例中使用CLASSPATH,因为Java使用它。但是,您可以通过从环境变量或配置文件中加载一个值来使用类似的方法,该文件指示存储XML文件的目录。
答案 3 :(得分:0)
您可以在不对类路径进行任何更改的情况下执行此操作。我们的想法是将资源文件存储在一个单独的目录中,但在运行构建过程时将它们复制到类路径中的目录中。
以下是配置示例:
source Directory is ${basedir}/src/main/java
resource directory is ${basedir}/src/main/resources
在构建脚本中,将 .java文件和资源文件( .xml)复制到类路径中的目录,例如:
${basedir}/target/classes
您的测试代码针对目标目录运行。目标目录未签入SVN,让您的SVN管理员满意,并且您不必更改代码。