2

我正在尝试构建一个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配置的不同。在命令行中,它的行为类似;当pathpom.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似乎期望pathtomee: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>

然后,pathtomee-maven-plugin的配置部分中指定如下:

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

然后,像这样执行maven:

mvn tomee:deploy
mvn tomee:undeploy -Pundeploy

-D我认为这比在执行时(YMMV)指定一些参数更方便。

但是,我认为完美的解决方案是,如果您可以pathtomee-maven-plugin's 配置中进行配置,以便两者都可以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
4

1 回答 1

0

我使用 glassfish,而不是 tomcat,但我认为同样的原则也适用于此。在 GF 中,部署需要完整路径,而取消部署只需要包名。例如,glassfish 类似于:

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

asadmin undeploy helloworld

取消部署不需要路径,因为文件在服务器上,一旦你命名它,glassfish/tomcat 就知道它在哪里。

根据评论编辑:我为 glassfish 的东西道歉,我没有注意你提到 tomcat,我已经编辑了一些以反映这一点。

我现在明白了,我想,你在找什么。查看:

我认为,这是另一个 SO 答案,他出色地解释了您正在寻找的内容。我希望这行得通。

于 2017-08-09T09:56:17.667 回答