当前位置: 首页 > 知识库问答 >
问题:

目标运行时WildFly在maven测试后解包

何睿范
2023-03-14

我目前正在为Hibernate项目Hibernate Search构建一个新包,我需要使用Arquillian在托管的WildFly容器中运行一些单元测试。当我使用命令mvn清洁安装时,我得到了以下错误:

org.jboss.arquillian.container.spi.配置异常:jbossHome'${project.build.directory}/node1/wilfly-${org.wildfly}'必须存在

此属性在./src/test/Resources/arquillian.xml中配置。有此异常是“正常的”,因为它有原因:目标文件夹./Target/node1/wilfly-10.0.0。最终不存在。但是,此路径应该在mavenpom.xml中配置。所以我尝试在没有测试的情况下运行maven install:

Mincongs-MBP:gsoc-hsearch mincong$ mvn clean install -DskipTests=true
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Hibernate Search - JSR352 5.6.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ hs-jsr352 ---
[INFO] Deleting /Users/mincong/Documents/GitHub/gsoc-hsearch/target
[INFO] 
[INFO] --- dependencypath-maven-plugin:1.1.1:set (set-all) @ hs-jsr352 ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hs-jsr352 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ hs-jsr352 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 16 source files to /Users/mincong/Documents/GitHub/gsoc-hsearch/target/classes
[INFO] /Users/mincong/Documents/GitHub/gsoc-hsearch/src/main/java/org/hibernate/search/jsr352/internal/IndexingContext.java: Some input files use or override a deprecated API.
[INFO] /Users/mincong/Documents/GitHub/gsoc-hsearch/src/main/java/org/hibernate/search/jsr352/internal/IndexingContext.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ hs-jsr352 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ hs-jsr352 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 9 source files to /Users/mincong/Documents/GitHub/gsoc-hsearch/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ hs-jsr352 ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-war-plugin:2.6:war (default-war) @ hs-jsr352 ---
[INFO] Packaging webapp
[INFO] Assembling webapp [hs-jsr352] in [/Users/mincong/Documents/GitHub/gsoc-hsearch/target/hs-jsr352-5.6.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/Users/mincong/Documents/GitHub/gsoc-hsearch/src/main/webapp]
[INFO] Webapp assembled in [113 msecs]
[INFO] Building war: /Users/mincong/Documents/GitHub/gsoc-hsearch/target/hs-jsr352-5.6.0-SNAPSHOT.war
[INFO] 
[INFO] --- maven-dependency-plugin:2.6:unpack (unpack) @ hs-jsr352 ---
[INFO] Configured Artifact: org.wildfly:wildfly-dist:10.0.0.Final:zip
[INFO] Unpacking /Users/mincong/.m2/repository/org/wildfly/wildfly-dist/10.0.0.Final/wildfly-dist-10.0.0.Final.zip to /Users/mincong/Documents/GitHub/gsoc-hsearch/target/node1 with includes "" and excludes ""
[INFO] 
[INFO] --- maven-resources-plugin:2.6:copy-resources (configure-as-node-node1) @ hs-jsr352 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/mincong/Documents/GitHub/gsoc-hsearch/src/wildflyConfig
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ hs-jsr352 ---
[INFO] Installing /Users/mincong/Documents/GitHub/gsoc-hsearch/target/hs-jsr352-5.6.0-SNAPSHOT.war to /Users/mincong/.m2/repository/io/github/mincongh/hs-jsr352/5.6.0-SNAPSHOT/hs-jsr352-5.6.0-SNAPSHOT.war
[INFO] Installing /Users/mincong/Documents/GitHub/gsoc-hsearch/pom.xml to /Users/mincong/.m2/repository/io/github/mincongh/hs-jsr352/5.6.0-SNAPSHOT/hs-jsr352-5.6.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.274 s
[INFO] Finished at: 2016-06-18T16:01:51+02:00
[INFO] Final Memory: 36M/280M
[INFO] ------------------------------------------------------------------------

我注意到:

  • 测试位于步骤7
  • WildFly安装位于步骤9

因此,测试是在运行时设置之前启动的。因此,我的问题是:

  • 如何确保托管运行时WildFly 10在测试之前解压缩

我对所有这些领域都是新手。如果我把话弄混了或问了一些愚蠢的问题,请原谅我。。。谢谢你的帮助!

以下是一些可能有用的相关文件:

  • <代码>/pom。xml
  • <代码>/src/测试/资源/阿奎利安。xml
  • <代码>/src/test/java/org/hibernate/search/jsr352/DeploymentTest。java

./pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>io.github.mincongh</groupId>
  <artifactId>hs-jsr352</artifactId>
  <version>5.6.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>Hibernate Search - JSR352</name>
  <description>New implementation mass-indexer using JSR 352</description>

  <properties>
    <org.jboss.arquillian.version>1.1.1.Final</org.jboss.arquillian.version>
    <org.wildfly>10.0.0.Final</org.wildfly>
    <org.wildfly.arquillian>8.2.1.Final</org.wildfly.arquillian>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <profiles>
    <profile>
      <id>perf</id>
      <properties>
        <org.hibernate.search.enable_performance_tests>true</org.hibernate.search.enable_performance_tests>
      </properties>
    </profile>
  </profiles>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.jboss.arquillian</groupId>
        <artifactId>arquillian-bom</artifactId>
        <version>1.1.11.Final</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-search-orm</artifactId>
      <version>5.5.3.Final</version>
      <!-- 
      <exclusions>
        <exclusion>
          <groupId>dom4j</groupId>
          <artifactId>dom4j</artifactId>
        </exclusion>
      </exclusions>
       -->
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.batch</groupId>
      <artifactId>javax.batch-api</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- Not sure the version of EJB, this is provided by GlassFish -->
    <dependency>
      <groupId>javax.ejb</groupId>
      <artifactId>javax.ejb-api</artifactId>
      <version>3.2</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- tests -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
    </dependency>
    <dependency>
      <groupId>org.wildfly</groupId>
      <artifactId>wildfly-arquillian-container-managed</artifactId>
      <version>${org.wildfly.arquillian}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.jboss.logmanager</groupId>
          <artifactId>jboss-logmanager</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.jboss.logmanager</groupId>
          <artifactId>log4j-jboss-logmanager</artifactId>
        </exclusion>
        <!-- This exclusion is needed to be able to setup the project in Windows:
             it otherwise includes transitive dependency to the JDK JConsole -->
        <exclusion>
          <artifactId>wildfly-patching</artifactId>
          <groupId>org.wildfly</groupId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
      <plugin>
        <!-- Allows to find the absolute path to dependencies -->
        <groupId>org.bitstrings.maven.plugins</groupId>
        <artifactId>dependencypath-maven-plugin</artifactId>
        <version>1.1.1</version>
        <executions>
          <execution>
            <id>set-all</id>
            <goals>
              <goal>set</goal>
            </goals>
            <configuration>
            <propertySets>
              <propertySet>
                <includes>
                  <include>org.jboss.byteman:byteman:jar</include>
                </includes>
              </propertySet>
            </propertySets>
          </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <forkCount>1</forkCount>
          <reuseForks>true</reuseForks>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <runOrder>alphabetical</runOrder>
          <systemPropertyVariables>
            <!-- See HSEARCH-1444 -->
            <hibernate.service.allow_crawling>false</hibernate.service.allow_crawling>
            <com.sun.management.jmxremote>true</com.sun.management.jmxremote>
            <org.hibernate.search.enable_performance_tests>${org.hibernate.search.enable_performance_tests}</org.hibernate.search.enable_performance_tests>
          </systemPropertyVariables>
          <additionalClasspathElements>
            <!-- Needed by Byteman to load the agent on demand -->
            <additionalClasspathElement>${jdk-toolsjar}</additionalClasspathElement>
          </additionalClasspathElements>
        </configuration>
      </plugin>      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.17</version>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>unpack</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.wildfly</groupId>
                  <artifactId>wildfly-dist</artifactId>
                  <version>${org.wildfly}</version>
                  <type>zip</type>
                  <overWrite>true</overWrite>
                  <outputDirectory>${project.build.directory}/node1</outputDirectory>
                </artifactItem>
                <!-- 
                <artifactItem>
                  <groupId>org.hibernate</groupId>
                  <artifactId>hibernate-search-modules</artifactId>
                  <version>${project.version}</version>
                  <classifier>wildfly-10-dist</classifier>
                  <type>zip</type>
                  <overWrite>true</overWrite>
                  <outputDirectory>${project.build.directory}/node1/wildfly-${org.wildfly}/modules</outputDirectory>
                </artifactItem>
                 -->
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <!-- Copy the AS configuration files so we can use our custom configurations -->
          <execution>
            <id>configure-as-node-node1</id>
            <!-- <phase>pre-integration-test</phase> -->
            <phase>integration-test</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/node1/wildfly-${org.wildfly}</outputDirectory>
              <overwrite>true</overwrite>
              <resources>
                <resource>
                  <directory>${basedir}/src/wildflyConfig</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

./src/测试/资源/阿奎利安。xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
 ~ Hibernate Search, full-text search for your domain model
 ~
 ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later
 ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<arquillian xmlns="http://jboss.org/schema/arquillian"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/schema/arquillian
        http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

  <defaultProtocol type="Servlet 3.0" />

  <!-- Uncomment in order to inspect deployments -->
  <!--
  <engine>
    <property name="deploymentExportPath">target/deployments</property>
  </engine>
  -->

  <group qualifier="Grid" default="true">
    <container qualifier="container.active-1" mode="suite" default="true">
      <configuration>
        <property name="jbossHome">${project.build.directory}/node1/wildfly-${org.wildfly}</property>
        <!-- Needed for JMS tests -->
        <property name="serverConfig">standalone-full-testqueues.xml</property>
        <property name="javaVmArguments">-javaagent:${byteman.agent.path}=script:${byteman.script.path} -Xmx512m -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=127.0.0.1</property>
        <!-- To debug the Arquillian managed application server: -->
        <!-- property name="javaVmArguments">-javaagent:${byteman.agent.path}=script:${byteman.script.path} -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -Xmx512m -Dorg.jboss.remoting-jmx.timeout=300  -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=127.0.0.1</property -->
      </configuration>
    </container>
  </group>
</arquillian>

./src/test/java/org/hibernate/search/jsr352/DeploymentTest。Java语言

package org.hibernate.search.jsr352;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ArchivePaths;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class DeploymentTest {

    @Deployment
    public static WebArchive createDeployment() {
        WebArchive war = ShrinkWrap.create(WebArchive.class)
                .addPackages(true, "io.html" target="_blank">github.mincongh")
                .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
                .addAsResource("META-INF/batch-jobs/mass-index.xml");
        System.out.println(war.toString(true));
        return war;
    }

    @Test
    public void startJob() {
        // TODO: add tasks here
    }
}

共有1个答案

鲁财
2023-03-14

也许你混淆了Maven Surefire和故障保护插件。

上面的部署测试(DeploymentTest)是一个单元测试,而不是IT测试,将由Surefire执行。因此,如果您希望使用maven依赖插件解包WildFly,则需要将解包绑定到一个阶段,例如

Maven生命周期参考:

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

 类似资料:
  • 我有一个多模块maven项目,在同一个文件夹(src/test/java)中包含集成和单元测试。集成测试标记为。我想以以下设置结束: 如果我运行,我希望所有测试都能编译,但我不想执行任何测试 重要的一点是,我希望在中配置它,而没有任何额外的命令行参数。 目前,我在我的父母pom中提出了以下设置。xml,其中唯一的问题是#1,其中执行所有测试: 所有子模块的pom中都有以下插件配置。xml,我认为应

  • 使用maven对Spring应用程序进行单元测试后,在完成构建时遇到问题。我注意到mvn安装没有完成,在运行了所有单元测试之后,它似乎挂起了。如果运行我将从cmd行获得要完成的测试,但构建挂起 这就是它的结尾。两个线程正在运行,不确定我在那里做了什么。无论如何,为了排除故障,我删除了所有测试并让程序完全构建。如果我运行,我就可以完成它。最后,我添加了一个JUnit测试,它本质上是一个system.

  • 我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te

  • 以下命令不运行我的任何测试: 而普通的旧确实如此。 我在测试中添加了这些注释: 我在这里或这里的插件文档页面上都没有看到任何相关信息

  • 我在这个版本的Java中使用Maven 3.2.3 当我奔跑 我在集成测试中遇到如下错误… 下面是如何配置我的编译器插件... 下面是我的故障安全配置 有什么办法可以防止我看到的这些奇怪的“在分支目标处期待堆栈映射帧”错误吗? 编辑: 我正在使用这些依赖项(正如评论所推测的,这些是问题):

  • 问题内容: 我在Eclipse中创建了一个新的maven项目,该项目通过使用HtmlUnitDriver和FirefoxDriver来调出一个网页并检查页面标题来运行简单测试。当我运行maven命令mvn test时,这就是我得到的一切: 当我在Eclipse中运行相同的Maven命令时,它显示以下内容: 这是我的pom.xml,供那些想要检查是否可能是问题的人使用: 问题答案: 您是说要添加为P