Как читать настройки maven.м2/настройки.XML-файл из плагина
три вопроса в порядке убывания важности - ссылки сделаю.
мне нужно прочитать некоторые настройки maven, такие как прокси-серверы в моем плагине maven. Как я могу прочитать их из моего плагина. Я могу читать .м2/настройки.xml-файл, но я думаю, что должен быть более простой способ (некоторый API, который уже делает это).
-
Я вижу разработчики cookbook есть класс
org.apache.maven.project.MavenProject
какая зависимость I нужно, чтобы это было доступно в моем плагине - я чувствую, что это будет хорошо. -
возможно ли иметь свои собственные свойства в
settings.xml
допустим<users>
<user>
<username>user_name1</username>
<password>encrypted_password</password>
</user>
</users>как ?
PS: Я новичок.
обновление 1
я смог создать и прочитать пользовательские свойства после инъекция свойств POM через настройки.в XML. Однако я хотел бы иметь конфигурацию, подобную тому, что груз обеспечивает. Е. Г.
<servers>
<server>
<id>tomcat7_local</id>
<configuration>
<cargo.hostname>localhost</cargo.hostname>
<cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
<cargo.remote.username>my_username</cargo.remote.username>
<cargo.remote.password>my_password</cargo.remote.password>
<cargo.servlet.port>8080</cargo.servlet.port>
</configuration>
</server>
<server>
<id>tomcat6_local</id>
<configuration>
<cargo.hostname>localhost</cargo.hostname>
<cargo.remote.uri>http://localhost:8080/manager</cargo.remote.uri>
<cargo.remote.username>my_username</cargo.remote.username>
<cargo.remote.password>my_password</cargo.remote.password>
<cargo.servlet.port>8080</cargo.servlet.port>
</configuration>
</server>
</servers>
как мне этого достичь. Есть своего рода обходной путь для моей проблемы 3rd не уверен, что это правильный путь.
редактировать
спасибо Jordan002! Я знаю, что у меня может быть несколько профилей, но я не знал, как их использовать. Таким образом, имея профили, я могу установить значение моей переменной или, скорее, ввести значение в мой плагин, сказав что-то вроде
@Parameter(alias = "cargo.hostname") private String hostname;но, как я вижу, для плагина cargo все это требуется определяется как ниже
<servers>
<server>
<id>someId</id>
<configuration>
<!-- Configurations are placed here -->
</configuration>
</servers>
аналогично, или может быть не так похожи, как нет конфигурация здесь
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>My_proxy_host</host>
<port>My_proxy_port</port>
</proxy>
</proxies>
где я могу поместить информацию прокси, которую использует maven. Теперь я не хочу переопределять его внутри некоторых профили и я не хочу, чтобы обработать этот файл, чтобы получить информацию.
далее, я хотел бы сделать что-то вроде груза. Это позволяет мне написать всю конфигурацию внутри сервера и в POM проекта мне нужно только сделать следующее
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.server.settings>tomcat7_local</cargo.server.settings>
</properties>
</configuration>
<deployer>
<type>remote</type>
</deployer>
<deployables>
<deployable>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>war</type>
<properties>
<context>${project.artifactId}</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
и груз подбирает конфигурации(ы), которые я определил для tomcat7_local не нужно писать профиль для этого.
2 ответов
введите компонент setttings, как описано здесь http://maven.apache.org/plugin-tools/maven-plugin-tools-annotations/
его в Maven core org.апаш.maven: Maven-core: 3.0.5
используйте свойства напрямую, а не вложенные. например http://maven.apache.org/examples/injecting-properties-via-settings.html
Я не слишком хорошо знаком с плагином Cargo, но из документации он кажется настраиваемым, как и любой другой плагин Maven. То, что я бы изменил от вашего "обновления 1", было бы сделать профили tomcat6 и tomcat7:
<profiles>
<profile>
<id>tomcat6_local</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<cargo.hostname>localhost</cargo.hostname>
<cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
<cargo.remote.username>my_username</cargo.remote.username>
<cargo.remote.password>my_password</cargo.remote.password>
<cargo.servlet.port>8080</cargo.servlet.port>
</properties>
</profile>
<profile>
<id>tomcat7_local</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<cargo.hostname>localhost</cargo.hostname>
<cargo.remote.uri>http://localhost:8080/manager</cargo.remote.uri>
<cargo.remote.username>my_username</cargo.remote.username>
<cargo.remote.password>my_password</cargo.remote.password>
<cargo.servlet.port>8080</cargo.servlet.port>
</properties>
</profile>
</profiles>
и укажите во время выполнения, какой tomcat вы хотели бы запустить / остановить, пройдя в соответствующем профиле:
mvn install -P tomcat6_local
надеюсь, что это помогает.