使用Arquillian对接Open Liberty时初始化报错:wlpHome缺失
Ah, I’ve run into this exact issue before when setting up Arquillian tests with Open Liberty. The error boils down to one thing: Arquillian can’t find the path to your Open Liberty installation directory (wlpHome). Let’s walk through the fixes that should get your tests running:
1. Make Sure the configure-arquillian Goal Actually Runs
You’ve already added the configure-arquillian goal to your liberty-maven-plugin executions (set to run in the pre-integration-test phase), which is supposed to generate an arquillian.xml file in target/test-classes with the correct wlpHome path.
- First, run your tests using the full Maven lifecycle command:
mvn clean verify. This ensures thepre-integration-testphase runs before your integration tests, giving Arquillian the config it needs. - Check if
target/test-classes/arquillian.xmlexists after running the command. It should have a section like this:
If the file’s missing, double-check your<container qualifier="liberty-managed" default="true"> <configuration> <wlpHome>${liberty.install.dir}</wlpHome> <!-- Other container configs --> </configuration> </container>assemblyArtifactconfig in the liberty plugin—make sure it’s correctly pulling down the Open Liberty runtime.
2. Add the Explicit Arquillian Container Dependency
Right now you’re only including the arquillian-liberty-managed-junit pom dependency. Let’s add the actual container adapter jar to ensure Arquillian can find the Open Liberty managed container implementation:
Add this to your <dependencies> section:
<dependency> <groupId>io.openliberty.arquillian</groupId> <artifactId>arquillian-liberty-managed</artifactId> <version>1.1.6</version> <scope>test</scope> </dependency>
3. Fix Version Compatibility Issues
You’re using liberty-maven-plugin version 3.0.M1 (a milestone release) with arquillian-liberty-managed version 1.1.6. These might not play nicely together.
I’d recommend either:
- Downgrading the liberty plugin to a stable release like
2.1.1(which is fully compatible with Arquillian adapter 1.1.6), or - Upgrading the Arquillian adapter to a version that supports liberty plugin 3.x (check the Open Liberty Arquillian docs for matching versions).
4. Manually Pass the wlpHome Property
If all else fails, you can explicitly pass the wlpHome path to the failsafe plugin. The liberty plugin sets a liberty.install.dir property pointing to the installed runtime, so we can use that:
Update your maven-failsafe-plugin configuration to include:
<configuration> <summaryFile>${project.build.directory}/test-reports/it/failsafe-summary.xml</summaryFile> <reportsDirectory>${project.build.directory}/test-reports/it</reportsDirectory> <!-- Add this block --> <systemPropertyVariables> <wlpHome>${liberty.install.dir}</wlpHome> </systemPropertyVariables> </configuration>
5. Double-Check the skipTestServer Setting
Good call setting <skipTestServer>true</skipTestServer> in the liberty plugin—since Arquillian manages the server lifecycle, we don’t want the plugin starting it separately. Just confirming this is set correctly (it is in your pom, so that’s not the issue here).
Start with step 1 and work your way down—most of the time, the problem is either the configure-arquillian goal not running or a missing dependency.
内容的提问来源于stack exchange,提问作者Awkjand

