找不到 usr:arquillian-support-1.0 的功能定义

A feature definition could not be found for usr:arquillian-support-1.0

Liberty 20.0.0.1/AdoptOpenJdk 8

openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)

Liberty Arquillian 1.0.6(自由管理)server.xml 配置。

<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>javaee-8.0</feature>
        <feature>usr:arquillian-support-1.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>

当我将 usr:arquillian-support-1.0 功能添加到 server.xml 并启动应用程序服务器并得到这样的错误信息时。

[ERROR   ] CWWKF0001E: A feature definition could not be found for usr:arquillian-support-1.0

示例项目是here

现在无法通过 Open Liberty 使用 usr:arquillian-support-1.0 功能。这有两个部分。

您使用的 open liberty 发行版不包含 arquillian 支持功能。 pom.xml 中没有任何东西可以使它工作。 Liberty maven 插件确实支持安装额外的功能,但它(此时)不能与 usr 功能一起使用,例如 arquillian-support-1.0 功能。我认为 GitHub.

中的 issue 正在对此进行跟踪

所以现在我只是从 server.xml 中删除该行。我还建议查看 liberty-maven-plugin,我认为它可以显着简化您为使 Liberty 工作而进行的 Maven 配置,并且当添加对 usr 功能的支持时,您将需要它来获得 arquillian-support-添加了 1.0。

arquillian 支持功能只需要正确报告测试应用程序无法启动时发生的异常,因此根据您正在测试的内容,您可能根本不需要它。

如果您确实需要它,该功能本身会作为一个 zip 文件分发,只需将其解压缩到您的 liberty 服务器中即可。您可以使用 maven-dependency-plugin:

配置 pom.xml 将其提取为构建的一部分
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.1</version>
  <executions>
    <execution>
      <id>extract-support-feature</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <artifactItems>
      <artifactItem>
        <groupId>io.openliberty.arquillian</groupId>
        <artifactId>arquillian-liberty-support</artifactId>
        <version>1.0.6</version>
        <type>zip</type>
        <classifier>feature</classifier>
        <overWrite>false</overWrite>
        <outputDirectory>${project.build.directory}/liberty/wlp/usr</outputDirectory>
      </artifactItem>
    </artifactItems>
  </configuration>
</plugin>

示例取自:https://github.com/OpenLiberty/liberty-arquillian/tree/master/liberty-support-feature

查看您的示例项目,您似乎已经在使用 maven-dependecy-plugin 来部署 derby jar,因此您可能需要稍微调整一下这个示例才能使其正常工作。

认为你会想要将<configuration>块移动到<execution>块内,这样每次执行都有一个单独的配置,然后包括<execution> 块都在同一个 <plugin> 块中,但我对 maven 不是很有信心。