POM для com.sun.xml.ws:jaxws-rt:pom:2.2.10 является недействительным
Я сталкиваюсь со странной проблемой при сборке нашего проекта. Проблема сводится, вероятно, к зависимости от jaxws-rt 2.2.10. Основная проблема - это предупреждение, которое останавливает транзитивные зависимости для распространения на наш дистрибутив.The POM for com.sun.xml.ws:jaxws-rt:pom:2.2.10 is invalid, transitive dependencies (if any) will not be available
Пом, вероятно, неправильно, как показано в выводе mvn dependency:tree -X
или же mvn dependency:tree -Dverbose
[WARNING] Failed to build parent project for com.sun.xml.ws:bundles:pom:2.2.10
[WARNING] Failed to build parent project for com.sun.xml.ws:jaxws-rt:pom:2.2.10
[WARNING] The POM for com.sun.xml.ws:jaxws-rt:pom:2.2.10 is invalid, transitive dependencies (if any) will not be available: 5 problems were encountered while building the effective model for co
m.sun.xml.ws:jaxws-rt:2.2.10
[ERROR] 'dependencies.dependency.version' for javax.xml.bind:jaxb-api:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.bind:jaxb-core:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.bind:jaxb-impl:jar is missing. @
[ERROR] 'dependencies.dependency.version' for org.jvnet.staxex:stax-ex:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.fastinfoset:FastInfoset:jar is missing. @
Странно то, что pom jaxws-rt не определяет версии вышеупомянутых библиотек. Самая большая магия из всех происходит на наших Дженкинс, где сборка происходит в отличие от любого другого ноутбука. Простое добавление версий в jaxws-rt pom в локальном репо решает эту проблему. Я верю, что когда я узнаю, почему jenkins может построить его без предупреждения, я смогу исправить ошибки на ноутбуках.
Что мы исследовали до сих пор
- кажется, это не конкретная версия Maven
- кажется, это не зависит от ОС
- не верьте, что это может быть вызвано другой версией Java (просто попытка)
- нет никаких подтвержденных файлов в jenkins
- загруженные зависимости одинаковы по содержанию (jenkins vs laptops)
Примечание: переписать pom в короткие сроки невозможно, так как это уже довольно сложно
3 ответа
В моем случае JAVA_HOME
переменная среды указывает на JRE. Я установил его в свою папку установки JDK (НА моем systwm это:JAVA_HOME=C:\Programme\Java\jdk-13.0.2
).
Моя вторая проблема заключалась в использовании jaxws-maven-plugin
в версии 2.3.1
. Я изменил его в pom.xml на2.3.3
следующим образом:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>
После этих изменений все было хорошо.
Чтобы выяснить, почему сборка ведет себя по-разному в jenkins и на вашем ноутбуке, вы можете проверить следующие пункты:
- убедитесь, что вы используете точно одинаковую версию Maven с обеих сторон. Например, вы можете добавить простую задачу "mvn -version" в jenkins для вывода сведений о версии.
- убедитесь, что в вашей установке maven нет специальных настроек: выполните "mvn help: ffective -pom" и "mvn help: ffective -settings" в jenkins и на вашем ноутбуке, и затем вы можете сравнить обе настройки: есть ли какое-то другое определение для
<repository>
или же<mirror>
на одной стороне?
Если в настройках есть какая-то разница, вы можете проверить следующие файлы в ваших установках maven:
- глобальные настройки в вашем пути установки maven: conf / settings.xml
- пользовательские настройки в $home вашего агента jenkins: $home /.m2 / settings.xml
Обратите внимание, что каждый из этих файлов настроек может быть переопределен с помощью параметров командной строки -gs и -s mvn соответственно.
В моем случае установка переменной JAVA_HOME на правильный JDK устранила проблему, она четко упоминается в документации по установке maven https://maven.apache.org/install.html