Arquillian Shrinkwrap предоставляет пользовательский файл settings.xml

Я настроил проект arquillian, и он все работает локально, но при запуске сборки maven на нашем модуле непрерывной интеграции он не работает. Мне удалось докопаться до сути проблемы, и это потому, что файл maven user settings.xml в окне CI на самом деле имеет некоторые определения сервера (для другого проекта), тогда как локально для моей машины это файл по умолчанию (без определенных серверов).). Тесты выдают исключение RuntimeException, потому что MavenResolver ищет файл settings-security.xml, которого нет в окне CI.

Я бы предпочел не добавлять файл settings-security.xml, а вместо этого хотел бы снабдить распознаватель "пустым" файлом settings.xml или, что еще лучше, запретить ему использовать его. Это возможно?

Я попробовал ответ из этой ветки https://developer.jboss.org/thread/174873 котором сказано добавить следующую опцию к отказоустойчивому плагину:

<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-файл, который не существует, все работает нормально из командной строки, выполняющей "mvn clean install", но когда я отлаживаюсь в моей IDE, она все равно не работает.

Есть ли способ, которым я могу либо: Сказать решателю maven не использовать файл settings.xml / использовать файл 'default' Создайте пустой файл settings.xml в моем проекте и скажите, чтобы решатель maven использовал это

Я попробовал следующую строку в моем коде, чтобы построить мой архив, но это, похоже, не дало эффекта:

.addAsLibraries(Maven.configureResolver().fromFile("test-settings.xml").loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile())

Спасибо за любую помощь, Крейг

1 ответ

Средство распознавания ShrinkWrap по умолчанию загружает файл settings-security.xml из

DEFAULT_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%, что этот метод будет работать.

Другие вопросы по тегам