Плагин развертывания Maven

Я переносил наш сервер сборки maven с Maven 2 на Maven 3. Я настраиваю maven для развертывания нового java-приложения на удаленном сервере с помощью scp. Однако при запуске «mvn install» я получаю следующие сообщения.

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO]
    [INFO] FooCorp Parent Project
    [INFO] FooCorp Daemons
    [INFO] FooCorp Transport Objects and Interfaces
    [INFO] FooCorp Web Client
    [INFO] FooCorp Web Application
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building FooCorp Parent Project S88-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-install-plugin:2.3:install (default-install) @ Foo ---
    [INFO] Installing /home/ubuntu/FooCorp/pom.xml to /home/ubuntu/mvn_local_repo/com/Foo/Foo/S88-SNAPSHOT/Foo-S88-SNAPSHOT.pom
    [INFO]
    [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ Foo ---
    Downloading: scp://mvn.FooCorp.com/var/www/maven2/com/Foo/Foo/S88-
SNAPSHOT/maven-metadata.xml
Exception in thread "pool-1-thread-1" java.lang.OutOfMemoryError: Java heap space
    at com.jcraft.jsch.IdentityFile.decrypt_rsa(IdentityFile.java:648)
    at com.jcraft.jsch.IdentityFile.decrypt(IdentityFile.java:553)
    at com.jcraft.jsch.IdentityFile.setPassphrase(IdentityFile.java:435)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:225)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:207)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:200)
    at org.apache.maven.wagon.providers.ssh.jsch.AbstractJschWagon.openConnectionInternal(AbstractJschWagon.java:133)
    at org.apache.maven.wagon.AbstractWagon.openConnection(AbstractWagon.java:115)
    at org.apache.maven.wagon.AbstractWagon.connect(AbstractWagon.java:217)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.connectWagon(WagonRepositoryConnector.java:345)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.pollWagon(WagonRepositoryConnector.java:385)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:571)
    at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

Вот некоторая информация о системе, которую я использую.

:> echo $MAVEN_OPTS
-Xmx2000m -Xms256m
:> mvn --version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_65, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-36-generic", arch: "amd64", family: "unix"

Работает на Ubuntu 14.04 с общей памятью 4 ГБ.

Я получаю одно и то же сообщение об ошибке каждый раз, когда запускаю mvn install. Файл, который загружается в последней команде перед исключением пространства кучи java ... Downloading: scp://mvn.FooCorp.com/var/www/maven2/com/Foo/Foo/S88-SNAPSHOT/maven-metadata.xml ... Существует ли на удаленном сервере (у меня есть к нему доступ, поэтому я проверил). У Maven, похоже, много памяти в соответствии с MAVEN_OPTS. Кроме того, я наблюдал за системной памятью с помощью команды top, и она почти никогда не использует более 1,5 ГБ памяти. Я просмотрел множество других решений подобных проблем, и все они предполагают предоставление Maven большего объема памяти, но я думаю, что 2 ГБ должны покрывать все, что нужно maven (могу ли я ошибаться). Не уверен, что это поможет, но я могу запустить «mvn install», и он отлично работает. Единственная проблема - команда развертывания maven.

Плагин вагона настроен в моем POM.xml так

<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.4</version>
    </extension>
</extensions>

И конфигурация maven-deploy-plugin настраивается в POM следующим образом...

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <configuration>
        <argLine>-Xmx3000m</argLine>
     </configuration>
</plugin>

У меня было трудное время с этим, не знаю, что еще попробовать. Буду очень признателен за любые возможные решения или общие советы.

Я могу добавить больше информации, если это необходимо.

Спасибо за любую помощь, которую вы можете предоставить.


person PaulM    schedule 16.12.2014    source источник
comment
вы можете сделать дамп кучи во время его развертывания   -  person jmj    schedule 16.12.2014
comment
Попытался добавить следующие строки в мой MAVEN_OPTS: -XX:+HeapDumpOnOutOfMemoryError И добавил эту опцию в мой плагин surefire ‹plugin› ‹artifactId›maven-surefire-plugin‹/artifactId› ‹configuration› ‹argLine›-Xmx3000m -XX:MaxPermSize= 512m -XX:+HeapDumpOnOutOfMemoryError‹/argLine› ‹/configuration› ‹/plugin›, но не смог заставить maven сделать дамп кучи.   -  person PaulM    schedule 16.12.2014
comment
Вы можете наблюдать heapdump или это более быстрый процесс? вручную   -  person jmj    schedule 16.12.2014
comment
Мне удалось получить дамп кучи, вручную установив путь к дампу кучи. Открыл его с помощью инструмента анализа памяти eclipse. Хотя не уверен, что ищу.   -  person PaulM    schedule 16.12.2014
comment
Плагин maven-deploy-plugin не имеет элемента конфигурации <argLine>..</argLine>. Вопрос в том, почему вы пытаетесь использовать maven-deploy-plugin для развертывания для передачи на удаленный сервер приложений. maven-deploy-plugin предназначен для развертывания артефактов в репозиторий. Если вы хотите развернуть, я предлагаю вместо этого использовать cargo-maven2-plugin.   -  person khmarbaise    schedule 16.12.2014
comment
Я использую плагин maven-deploy-plugin для развертывания pom и war в репозиторий mvn.FooCorp.com/var/www/maven2/com/Foo/Foo/S88-SNAPSHOT/ с помощью scp. Спасибо за подсказку о теге argLine. Должен был прочитать документы об этом.   -  person PaulM    schedule 16.12.2014
comment
Почему бы вам не использовать обычный менеджер репозитория, который обрабатывает его через http вместо scp? Кроме того, какую версию maven-wagon вы используете? Как ты настроил вагон?   -  person khmarbaise    schedule 22.12.2014


Ответы (1)


Попробуйте увеличить размер кучи. Ссылки PFB для справки. Надеюсь, это поможет вам.

http://javarevisited.blogspot.com/2011/08/increase-heap-size-maven-ant.html

http://javarevisited.blogspot.com/2011/09/javalangoutofmemoryerror-permgen-space.html

:> эхо $MAVEN_OPTS -Xmx2000m -Xms256m

Попробуйте увеличить размер выделенного жирным шрифтом до -Xms512m и повторите попытку.

person Raphael    schedule 16.12.2014
comment
Я попробовал это решение, но получил те же результаты, что и в моем исходном посте. Спасибо за предложение, хотя! - person PaulM; 16.12.2014