我已经设置了一个arquillian项目,它在本地工作正常但是当在我们的持续集成盒上运行maven构建时它失败了。我设法找到问题的根源,这是因为CI框上的maven用户settings.xml文件实际上有一些服务器定义(对于另一个项目),而本地到我的机器它是默认文件(没有定义服务器) )。测试抛出一个RuntimeException,因为MavenResolver正在寻找在CI盒子上不存在的settings-security.xml文件。
我不想添加settings-security.xml,而是希望为解析器提供一个空的' settings.xml文件,甚至更好,告诉它不要使用它。这可能吗?
我尝试了这个帖子https://developer.jboss.org/thread/174873的答案,它几乎说要在failafe插件中添加以下选项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version><!-- or upper -->
<configuration>
<systemPropertyVariables>
<org.apache.maven.user-settings>nonExistentSetting.xml</org.apache.maven.user-settings>
</systemPropertyVariables>
</configuration>
</plugin>
如果我这样做并提供一个不存在的xml文件,那么从命令行运行&#m; mvn clean install&#39;但是当我在我的IDE中调试它仍然失败。
有没有办法可以: 告诉maven解析器不要使用settings.xml /使用&#39;默认&#39;文件 在我的项目中创建一个空的settings.xml并告诉maven解析器使用
我在我的代码中尝试了以下行来构建我的存档,但它似乎没有效果:
.addAsLibraries(Maven.configureResolver().fromFile("test-settings.xml").loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile())
感谢您的帮助, 克雷格
答案 0 :(得分:0)
ShrinkWrap解析器默认从
加载settings-security.xmlDEFAULT_SETTINGS_SECURITY_PATH = userHome == null ? ".settings-security.xml" : userHome.concat("/.m2/settings-security.xml").replace('/', File.separatorChar);
但您可以通过设置
覆盖此位置System.setProperty(MavenSettingsBuilder.ALT_SECURITY_SETTINGS_XML_LOCATION,
"someDir/empty-settings-security.xml");
当理论上提供替代位置(非空字符串)时,它应该跳过默认位置。但是我不能100%确定这种方法是可行的。