pigunit——如何在maven项目结构下访问pig脚本?

vjhs03f7  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(266)

我想用pigunit和maven。在maven中,我的pig脚本位于模块的根目录下 <module>/src/main/pig/<scriptName>.pig 所有的pigunit测试教程要么编写pig脚本的绝对url(当构建运行在我的机器之外的任何地方时,这显然不起作用),要么编写相对路径,它只是“神奇地”工作。但是当我直接输入脚本名或者 src/main/pig/<scriptName>.pig 要进行pigtest,在运行mvn测试时找不到脚本。
使用测线测试(使用scala+scalatest):

val pigTest = new PigTest("src/main/pig/calcProductVectors.pig", args)

结果:

- Script does something***FAILED***
  java.io.FileNotFoundException: src/main/pig/calcProductVectors.pig (No such file or directory)
  at java.io.FileInputStream.open0(Native Method)
  at java.io.FileInputStream.open(FileInputStream.java:195)
  at java.io.FileInputStream.<init>(FileInputStream.java:138)
  at org.apache.pig.pigunit.PigTest.readFile(PigTest.java:296)
  at org.apache.pig.pigunit.PigTest.readFile(PigTest.java:292)

我怎么才能得到 src/main/pig 在mvn测试运行时是否在路径上?

anauzrmj

anauzrmj1#

好的,我在java项目中发现了一些测试,它们刚刚将pig目录添加到maven中的project.build.testresources中:

<testResources>
  <testResource>
    <!-- Pig is being included in test/resource so that we can access it with PigUnit -->
    <directory>src/main/pig</directory>
    <filtering>true</filtering>
  </testResource>
  <testResource>
    <directory>src/test/resources</directory>
    <filtering>true</filtering>
  </testResource>
</testResources>

然后junit测试就会通过 src/main/pig/<scriptName>.pig 测试。
这在我的项目中不起作用,不确定是因为scalatest还是其他原因。我可以看到目录的内容被复制到 <module>/target/test-classes ,但是仍然没有找到它们的直接名称(这似乎更有意义,因为它们是在没有src/main/pig部分的情况下复制的)或者整个为java项目工作的路径。
最终从这个答案中,我找到了文件系统上运行测试的位置,它只是模块名,所以我像这样调整了路径,结果成功了:

val pigTest = new PigTest("<module>/src/main/pig/calcProductVectors.pig", args)

相关问题