2013-02-04 51 views
1

我使用maven-3.0.4和maven-glassfish-plugin 2.1(http://maven-glassfish-plugin.java.net/)和Glassfish 2.1.1。Maven-glassfish-plugin:如何指定部署目標?

相關的pom.xml片段:

<profile> 
     <id>deploy</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.glassfish.maven.plugin</groupId> 
        <artifactId>maven-glassfish-plugin</artifactId> 
        <version>2.1</version> 
        <configuration> 
         <glassfishDirectory>/home/user/glassfish</glassfishDirectory> 
         <domain> 
          <name>domain1</name> 
          <host>hostname</host> 
          <adminPort>4848</adminPort> 
         </domain> 
         <autoCreate>false</autoCreate> 
         <terse>true</terse> 
         <debug>false</debug> 
         <echo>true</echo> 
         <user>admin</user> 
         <passwordFile>/home/user/user.gfpass</passwordFile> 
         <components> 
          <component> 
           <name>${project.artifactId}</name> 
           <artifact>${project.build.directory}/${project.build.finalName}.war</artifact> 
          </component> 
         </components> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

問題是,我部署到Glassfish的服務器每個開發人員一個獨立實例配置和運行mvn glassfish:deploy原因:

[INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ project --- 
[INFO] deploy --port 4848 --enabled=true --host hostanme --precompilejsp=false --verify=false --echo=true --upload=true --terse=true --generatermistubs=false --passwordfile /home/user/user.gfpass --interactive=false --availabilityenabled=false --name project --target server --force=true --user admin /home/user/git/project/target/project-1.0.0-SNAPSHOT.war 
[ERROR] CLI171 Command deploy failed : Application project is already deployed on other targets. Please remove all references or specify all targets (if not using asadmin command line) before attempting redeploy operation 
[ERROR] Deployment of /home/user/git/project/target/project-1.0.0-SNAPSHOT.war failed. 

注意--target server在執行的命令。

如何在POM中指定我要部署的實例(即target)?

回答

2

經過一番研究,答案是不,我不能

有兩種選擇我所知道的:

  1. 使用exec-maven-plugin調用asadmin與所需的參數,或者
  2. 叉你自己的版本的maven-glassfish-plugin與變化 要求(這是我做了什麼就目前而言)。

事實證明,該插件非常簡單,我沒有問題修改它以適應我的需求。更麻煩的是建設它,但這是另一回事。

0

你好我的解決辦法是這樣的:

我離開了POM作爲重新部署執行

 <execution> 
       <id>gf-deploy</id> 
       <phase>package</phase> 
       <goals> 
        <goal>redeploy</goal> 
       </goals> 
      </execution> 

然後我修改了asadmin.bat文件,並在腳本調用應用程序服務器的行之後-cli.jar文件我添加了3個新行,請注意,重新部署調用undeploy和deploy命令,這樣maven glassfish插件的技巧就是在undeploy命令運行時打印一些內容(Tihs會將maven插件混淆,就好像undeploy命令是成功的總是),但是,當部署asadmin命令時,流程將正常運行。

:run 
if NOT %1 == undeploy goto :end 
%JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %* 
ECHO "TEST" 
:end 

if %1 == undeploy goto :end1 
%JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %* 
:end1 

做了這個修改後,重新部署工作非常棒!