我正在尝试构建一个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配置中的差异。在命令行中,这类似的行为;当省略了pom.xml中的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似乎期望一个与tomee:undeploy不同的path。
编辑
好吧,根据@Old编辑的答案,我可以这样做:
<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)更方便。
但是,在我看来,最好的解决方案是在tomee-maven-plugin的配置中配置tomee-maven-plugin,使tomee:deploy和tomee:undeploy都可以工作,而无需再费劲。
EDIT2
我发现了另一种没有配置文件的可能性,这似乎是我以前找不到的(基于: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发布于 2017-08-09 09:56:17
我用的是玻璃鱼,而不是猫,但我认为同样的原则也适用于这里。在GF中,部署需要完整路径,而未部署只需要包名。例如,玻璃鱼是这样的:
asadmin deploy C:\Projects\Java\helloworld\helloworld.war和
asadmin undeploy helloworld取消部署不需要路径,因为文件位于服务器上,一旦您命名它,glassfish/tomcat就知道它在哪里。
编辑基于评论:我对玻璃鱼的东西道歉,我没有注意你提到tomcat,我编辑了一点,以反映这一点。
我现在明白了,我想,你在找什么。查看:
这是另一个,所以回答,在哪里他做了一个出色的工作,解释确切的你在寻找什么,我想。我希望那能奏效。
https://stackoverflow.com/questions/45586095
复制相似问题