Я пытаюсь сделать релиз через плагин релиза Maven и у меня проблемы с конфигурацией SCM. Я использую Eclipse с установленным m2eclipse. Мы используем Mercurial и на моей машине (Win7) у меня установлен TortoiseHg. У меня есть тестовый проект, который создает банку. Мы используем супер-помп для наших проектов, так же как и тест-помп. Я установил это в супер-помпе:
<build>
<plugins>
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin
<version>1.6</version>
<configuration>
<connectionType>connection</connectionType>
</configuration>
</plugin>
</plugins>
</build>
Мой тестовый проект выглядит так:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>TestJar
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>my.group</groupId>
<artifactId>super-pom</artifactId>
<version>1.0</version>
</parent>
<scm>
<connection>
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
</connection>
<developerConnection>
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
</developerConnection>
</scm>
</project>
Обратите внимание, что мы подключаемся к нашему серверу SCM. Я подозреваю, что некоторые проблемы, с которыми я сталкиваюсь, могут быть связаны с этим. Я только смог найти примеры, которые используют http.
В своем файле settings.xml я добавил это:
<servers>
...
<server>
<id>our.scm.server</id>
<username>username</username>
<password>password</password>
</server>
</servers>
Когда я запускаю релиз: подготовить релиз: выполнить, всплывает диалоговое окно TortoisePlink, запрашивающее у меня пароль. В диалоговом окне запрашивается «пароль @ our.scm.server».
Похоже, он не использует имя пользователя или пароль из файла settings.xml, чего я и ожидал, добавив в него элемент server. Должно ли это быть? Я также попытался добавить свое имя пользователя в URL-адрес подключения:
<connection>
scm:hg:ssh://username@our.scm.server:22//path/to/TestJarProject
</connection>
но мне все еще предлагается ввести пустой пароль пользователя.
ВОПРОС ОДИН
Кто-нибудь успешно использовал ssh для подключения к Mercurial во время релизов Maven?
Так как в конечном итоге я хочу делать сборки в Hudson, я настроил задание Hudson, чтобы выпустить релиз, но он не работает с этой ошибкой:
[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s)
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\
LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\
maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \
prepare the release because you have local modifications :
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown]
... many, many more lines of this nature .....
ВОПРОС ВТОРОЙ
С какими локальными модификациями сталкивается Maven?
Поскольку проект извлекается из репозитория, единственное изменение, о котором я могу подумать, - это обновление файла pom (удаление SNAPSHOT из версии). Но Maven не должен жаловаться на это, так как он внес изменения сам, нет?
UPDATE
Согласно предложению Хмарбайса, я добавил это в POM моего родителя:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
</plugin>
</plugins>
</pluginManagement>