Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用包覆面提取找不到test-persistence.xml_Java_Maven_Persistence_Jboss Arquillian_Shrinkwrap - Fatal编程技术网

Java 使用包覆面提取找不到test-persistence.xml

Java 使用包覆面提取找不到test-persistence.xml,java,maven,persistence,jboss-arquillian,shrinkwrap,Java,Maven,Persistence,Jboss Arquillian,Shrinkwrap,我正在用ShrinkWrap构建一个集成测试,我希望使用测试文件testpersistence.xml来测试持久性。根据Arquillian指南,我需要这样: @Deployment public static Archive<?> createDeployment() { return ShrinkWrap.create(WebArchive.class, "test.war") .addPackage(Game.class.getPackage())

我正在用ShrinkWrap构建一个集成测试,我希望使用测试文件
testpersistence.xml
来测试持久性。根据Arquillian指南,我需要这样:

@Deployment
public static Archive<?> createDeployment() {
    return ShrinkWrap.create(WebArchive.class, "test.war")
        .addPackage(Game.class.getPackage())
        .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
        .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
}
您可以看到,我对
.addAsResource(“META-INF/persistence.xml”)
行进行了注释,该行旨在搜索
src/main/resources/META-INF/persistence.xml
,并添加到归档文件中。而且效果很好但是,当我用
test persistence.xml
替换它时,maven构建失败,出现错误:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.715 sec <<< FAILURE! - in org.hibernate.search.jsr352.DeploymentIT
org.hibernate.search.jsr352.DeploymentIT  Time elapsed: 6.714 sec  <<< ERROR!
java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive org.hibernate.search.jsr352.DeploymentIT.createDeployment()
    at org.jboss.shrinkwrap.impl.base.Validate.notNull(Validate.java:43)
    at org.jboss.shrinkwrap.impl.base.container.ContainerBase.fileFromResource(ContainerBase.java:1990)
    at org.jboss.shrinkwrap.impl.base.container.ContainerBase.addAsResource(ContainerBase.java:1056)
    at org.hibernate.search.jsr352.DeploymentIT.createDeployment(DeploymentIT.java:67)
Maven文档非常清楚地描述了该用法:

指定资源目录时,该目录中的每个文件都不能使用因此,我们可能必须只指定要包含的文件或指定要排除的文件

要包含资源,我们只需要添加
元素

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>[your directory]</directory>
        <includes>
          <include>[resource file #1]</include>
          <include>[resource file #2]</include>
          <include>[resource file #3]</include>
          ...
          <include>[resource file #n]</include>
        </includes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

...
我的资源插件实践项目
...
...
[您的目录]
[资源文件#1]
[资源文件#2]
[资源文件#3]
...
[资源文件#n]
...
...
...
好吧,当我添加
test persistence.xml
时,它可以工作。。。但是为什么我需要包括这个,maven不应该自动包括文件夹
src/test/resources
中的所有文件吗?
<testResources>
  <testResource>
    <filtering>true</filtering>
    <directory>src/test/resources</directory>
    <includes>
      <include>**/arquillian.xml</include>
      <include>**/arquillian.launch</include>
    </includes>
  </testResource>
</testResources>
<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>[your directory]</directory>
        <includes>
          <include>[resource file #1]</include>
          <include>[resource file #2]</include>
          <include>[resource file #3]</include>
          ...
          <include>[resource file #n]</include>
        </includes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>