2017-08-09 57 views
2

我試圖建立一個pom.xml來處理遠程TomEE(PluME 7.0.3)服務器的部署和取消部署。但是,我找不到在path配置標籤中使用的正確值。下面是部署我的應用程序(全面的EAR,用於教育目的)遠程TomEE工作插件配置:如何在tomee-maven-plugin中指定路徑,以便部署和取消部署都能正常工作?

<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中path標籤的時候,我可以部署和取消部署這樣的:

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

有沒有人經歷了同樣的行爲,並找到一種方法來緩解呢?在調用mvn時,我希望在pom.xml中完全配置部署和取消部署,但不指定其他參數。但是,截至目前,我不能這樣做,因爲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> 

然後,在tomee-maven-plugin的配置部分像這樣指定path

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

然後,像這樣執行maven:

mvn tomee:deploy 
mvn tomee:undeploy -Pundeploy 

我認爲比在執行時指定一些-D參數更方便(YMMV)。

然而,在我看來,理想的解決方案是,如果你能在tomee-maven-plugin的配置配置path事不宜遲,使得兩個tomee:deploytomee: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:[email protected] 
mvn tomee:[email protected] 

回答

0

我使用GlassFish的,不是tomcat,但我認爲這裏適用相同的原則。在GF中,部署需要完整路徑,取消部署只需要包名稱。例如,GlassFish的雲一樣的東西:

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

asadmin undeploy helloworld 

沒有在取消部署所需的路徑,因爲該文件是在服務器上,一旦你的名字,GlassFish的/ Tomcat能知道它在哪裏。我沒有注意到你提到tomcat,我已經編輯了一點,以反映這一點。

我現在明白了,我想,你在找什麼。退房:

它的另一個SO回答,他做了解釋你在尋找什麼的了出色的工作,我想。我希望那些作品。

+1

謝謝!請注意,我使用TomEE而不是Glassfish,但行爲似乎相似。據我所知,我可以精確地指定'tomee-maven-plugin'插件配置一次,因此,完全按照路徑。但該路徑對於部署或取消部署是有效的,而不是兩者都有效。我只想執行'mvn tomee:deploy'或'mvn tomee:undeploy',而不指定其他參數。 – stef77

+0

啊!我明白你了現在。對於玻璃魚的東西感到抱歉,我需要在閱讀上更好。你在找什麼是Maven資源過濾。通過編輯更新我的答案。 –

相關問題