Как я могу указать путь в tomee-maven-plugin, чтобы работали как развертывание, так и удаление?

Я пытаюсь создать pom.xml для обработки развертывания и отмены развертывания на удаленном сервере TomEE (PluME 7.0.3). Однако я не могу определить правильное значение для тега конфигурации path. Вот рабочая конфигурация плагина для развертывания моего приложения (полномасштабного EAR, для образовательных целей) на удаленном TomEE:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomee.maven</groupId>
      <artifactId>tomee-maven-plugin</artifactId>
      <version>7.0.3</version>
      <configuration>
        <context>someear</context>
        <tomeeClassifier>plus</tomeeClassifier>
        <tomeeHost>192.168.100.100</tomeeHost>
        <debugPort>8000</debugPort>
        <tomeeAjpPort>8009</tomeeAjpPort>
        <tomeeHttpPort>8080</tomeeHttpPort>
        <tomeeShutdownPort>8005</tomeeShutdownPort>
        <path>target/someear-1.0-SNAPSHOT.ear</path>
        <useBinaries>true</useBinaries>
      </configuration>
    </plugin>
  </plugins>
</build>

В то время как для отмены развертывания мне пришлось бы настроить плагин следующим образом:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomee.maven</groupId>
      <artifactId>tomee-maven-plugin</artifactId>
      <version>7.0.3</version>
      <configuration>
        <context>someear</context>
        <tomeeClassifier>plus</tomeeClassifier>
        <tomeeHost>192.168.100.100</tomeeHost>
        <debugPort>8000</debugPort>
        <tomeeAjpPort>8009</tomeeAjpPort>
        <tomeeHttpPort>8080</tomeeHttpPort>
        <tomeeShutdownPort>8005</tomeeShutdownPort>
        <path>someear-1.0-SNAPSHOT</path>
        <useBinaries>true</useBinaries>
      </configuration>
    </plugin>
  </plugins>
</build>

Обратите внимание на разницу в конфигурации path. В командной строке это работает аналогично; когда тег path в pom.xml опущен, я могу развернуть и отменить развертывание следующим образом:

mvn tomee:deploy -Dtomee-plugin.archive=target/someear-1.0-SNAPSHOT.ear
mvn tomee:undeploy -Dtomee-plugin.archive=someear-1.0-SNAPSHOT

Кто-нибудь испытал такое же поведение и нашел способ смягчить это? Я бы хотел, чтобы развертывание и удаление были полностью настроены в pom.xml без указания дополнительных параметров при вызове mvn. Но на данный момент я не могу этого сделать, так как tomee:deploy, кажется, ожидает другого path, чем tomee:undeploy.

РЕДАКТИРОВАТЬ

Хорошо, на основе отредактированного ответа @Old School я могу сделать что-то вроде этого:

<profiles>
  <profile>
    <id>deploy</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <my-tomee-maven-plugin-path>target/someear-1.0-SNAPSHOT.ear</tomee-maven-plugin-path>
    </properties>
  </profile>
  <profile>
    <id>undeploy</id>
    <properties>
      <my-tomee-maven-plugin-path>someear-1.0-SNAPSHOT</tomee-maven-plugin-path>
    </properties>
  </profile>
</profiles>

Затем укажите path в разделе конфигурации tomee-maven-plugin следующим образом:

        ...
        <path>${my-tomee-maven-plugin-path}</path>
        ...

Затем выполните maven следующим образом:

mvn tomee:deploy
mvn tomee:undeploy -Pundeploy

Что я считаю более удобным, чем указывать некоторые -D параметров во время выполнения (YMMV).

Однако идеальным решением, на мой взгляд, было бы, если бы вы могли настроить path в конфигурации tomee-maven-plugin так, чтобы и tomee:deploy, и tomee:undeploy работали без лишних слов.

РЕДАКТИРОВАТЬ2

Я обнаружил еще одну возможность без профилей, которую, по-видимому, не мог найти раньше (на основе: http://tomee-openejb.979440.n4.nabble.com/Deployment-to-TomEE-7-0-0-using-tomee-maven-plugin-error-Cannot-open-input-stream-to-server-tp4679142p4679282.html):

<plugin>
    <groupId>org.apache.tomee.maven</groupId>
    <artifactId>tomee-maven-plugin</artifactId>
    <version>7.0.3</version>
    <configuration>
        <context>${project.artifactId}</context>
        <tomeeClassifier>plus</tomeeClassifier>
        <context>someear</context>
        <tomeeClassifier>plus</tomeeClassifier>
        <tomeeHost>192.168.100.100</tomeeHost>
        <debugPort>8000</debugPort>
        <tomeeAjpPort>8009</tomeeAjpPort>
        <tomeeHttpPort>8080</tomeeHttpPort>
        <tomeeShutdownPort>8005</tomeeShutdownPort>
<!-- no <path> tag -->
        <useBinaries>true</useBinaries>
    </configuration>
    <executions>
        <execution>
            <id>deploy-it</id>
            <phase>none</phase>
            <goals>
                <goal>deploy</goal>
            </goals>
            <configuration>
                <path>target/someear-1.0-SNAPSHOT.ear</path>
            </configuration>
        </execution>
        <execution>
            <id>undeploy-it</id>
            <phase>none</phase>
            <goals>
                <goal>undeploy</goal>
            </goals>
            <configuration>
                <path>someear-1.0-SNAPSHOT</path>
            </configuration>
        </execution>
    </executions>
</plugin>

Применение:

mvn tomee:deploy@deploy-it
mvn tomee:undeploy@undeploy-it

person stef77    schedule 09.08.2017    source источник


Ответы (1)


Я использую стеклянную рыбу, а не кота, но я думаю, что здесь применимы те же принципы. В GF для развертывания требуется полный путь, а для отмены развертывания требуется только имя пакета. Например, стеклянная рыба выглядит примерно так:

asadmin deploy C:\Projects\Java\helloworld\helloworld.war

а также

asadmin undeploy helloworld

При отмене развертывания путь не требуется, потому что файл находится на сервере, и как только вы назовете его, Glassfish/tomcat узнает, где он находится.

РЕДАКТИРОВАТЬ на основе комментариев: мои извинения за стеклянную рыбу, я не обращал внимания на то, что вы упомянули кота, и я немного отредактировал, чтобы отразить это.

Думаю, теперь я понимаю, что вы ищете. Проверить:

Я думаю, это еще один ответ ТАК, где он отлично объясняет, что именно вы ищете. Я надеюсь, что это работает.

person Old Schooled    schedule 09.08.2017
comment
Благодарю вас! Обратите внимание, что я использую TomEE, а не Glassfish, но поведение похоже. Насколько я понимаю, я могу указать конфигурацию плагина tomee-maven-plugin ровно один раз и, таким образом, точно по пути. Но путь подходит либо для развертывания, либо для удаления, но не для того и другого одновременно. Я хочу выполнить только mvn tomee:deploy или mvn tomee:undeploy без указания дополнительных параметров. - person stef77; 09.08.2017
comment
Ааа! Теперь я тебя понял. Извините за ерунду со стеклянными рыбками, мне нужно научиться читать. То, что вы ищете, это фильтрация ресурсов Maven. Обновил мой ответ с правкой. - person Old Schooled; 09.08.2017