Запуск основных классов из развернутого артефакта с Maven

StackOverflow https://stackoverflow.com//questions/10653839

Вопрос

Я не понимаю. Я настроил My Pom.xml, чтобы использовать плагин Maven Exec, чтобы я мог выполнять некоторые классы в моем проекте с правильными классовыми паткой, -D определяют и -javaagent. Итак, из оболочки с классами, встроенными в ./Target/Classes etc .. Я могу запустить основные () методы, используя

mvn exec:java -Dexec:mainClass=classWithAMainMethod
.

Все хорошо.

Теперь я хочу отправить мой проект (артефакт JAR), и я все еще хочу иметь возможность использовать конфигурацию, которую я поставил в POM.xml для запуска классов с правильными аргументами и т. Д. .. Как мне сделать Это? Есть ли какой-то способ пребывания

mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod
.

Когда все у меня есть, это myartifact.jar (или репозиторий Maven с myartifact.jar в нем) ??

Я пробовал следующее:

    .
  • Получить банку с зависимостью: получить цель и расстегнуть ее. Я ничего не могу сделать с этим Поскольку Pom.xml, кажется, в конечном итоге в Meta-inf / Maven в артефактной банке. Есть ли способ использовать его?

  • Создание манекенного пома, где я хочу запустить свой проект с одной зависимостью в артефакте моих проектов. Затем я могу использовать EXEC: Java для запуска основных классов, но он не использует конфигурацию из моих проектов POM.

    спасибо.

Это было полезно?

Решение 2

Плагин Appassembler работал довольно хорошо для меня.Я заменил конфигурацию плагина Exec в POM моего проекта с чем-то вроде этого в разделе Build:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <repositoryLayout>flat</repositoryLayout>
        <repositoryName>lib</repositoryName>
        <extraJvmArguments>
            -Djava.rmi.server.hostname=localhost
            -javaagent:${spring.javaagent.jar}
        </extraJvmArguments>
        <programs>
            <program>
                <name>foo1</name>
                <mainClass>net.foor.FooMain</mainClass>
            </program>
               ...
    </configuration>
</plugin>
.

в Eclipse Я создал установку внешних инструментов для запуска результирующих скриптов из Target / appassembler / bin

на машине, которую я хотел развернуть (при условии доступа к внутренней репозитории Maven, где были установлены / развертываются мои артефакты + зависимости):

    .
  • Первое используйте wget или mvn Зависимость: get получить копию моей артефактной банке.
  • извлечь пом. unzip -j artifact.jar * /pom.xml *
  • беги mvn appassembler: собрать -dasembleedeTory=.
  • Переместите артефакт.jar в каталог ./lib
  • Установить Выполнить разрешения на сгенерированные сценарии оболочки в ./bin

Другие советы

Вы пытались использовать что-то вроде Onejar ?

Это звучит как то, что вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top