我使用maven-assembly-plugin在[app-root]/target/my-project-war下創建一個war文件。如何解壓這個war文件,使其成爲像[app-root]/war這樣的應用程序根目錄下的文件夾?在Maven清理包後打開war文件
我想要war文件夾而不是target/** .war的原因是我可以使用mvn gae:deploy直接部署到應用引擎。 gae:deploy來自maven-gae-plugin,它的確認只允許我指定appDir,而不是war文件。
的pom.xml
<plugin>
<groupId>net.kindleit</groupId>
<artifactId>maven-gae-plugin</artifactId>
<version>${gae.plugin.version}</version>
<configuration>
<unpackVersion>${gae.version}</unpackVersion>
<serverId>appengine.google.com</serverId>
<sdkDir>${gae.home}</sdkDir>
<appDir>${basedir}/war</appDir>
<splitJars>true</splitJars>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>${basedir}/assembly-war.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
組裝war.xml
<assembly>
<id>war</id>
<formats>
<format>war</format>
</formats>
<includeSiteDirectory>false</includeSiteDirectory>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
...
</fileSets>
<dependencySets>
</dependencySets>
</assembly>
這裏是我的項目文件夾。 War文件夾以粗體顯示。
$ ls -l test-maven-play-plugin/
total 24
drwxr-xr-x 5 angeloh staff 170 Jan 25 21:45 app
[email protected] 1 angeloh staff 2962 Jan 25 23:58 assembly-war.xml
drwxr-xr-x 6 angeloh staff 204 Jan 25 21:46 conf
drwxr-xr-x 26 angeloh staff 884 Jan 25 22:42 lib
[email protected] 1 angeloh staff 7380 Jan 26 00:05 pom.xml
drwxr-xr-x 4 angeloh staff 136 Jan 26 00:04 precompiled
drwxr-xr-x 5 angeloh staff 170 Jan 25 21:45 public
drwxr-xr-x 9 angeloh staff 306 Jan 26 00:04 target
drwxr-xr-x 6 angeloh staff 204 Jan 25 22:11 test
drwxr-xr-x 3 angeloh staff 102 Jan 25 22:15 test-result
drwxr-xr-x 2 angeloh staff 68 Jan 26 00:04 tmp
drwxr-xr-x 3 angeloh staff 102 Jan 25 22:10 **war**
---------------------- [UPDATE] ------------------ ----
有點小進步。如果我做這些改變:
的pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
......
<configuration>
......
<outputDirectory>${basedir}/war</outputDirectory>
</configuration>
......
</plugin>
組裝war.xml
<assembly>
<id>war</id>
<formats>
<format>dir</format>
</formats>
......
</assembly>
戰爭的內容將輸出到戰爭/測試播放1.0.0。但是,我希望它直接參戰,而不是war/test-play-1.0.0。
---------------------- [UPDATE] --------------------- -
最後,在我做出這些更改後,它適用於我。
的pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
......
<configuration>
......
<outputDirectory>${basedir}</outputDirectory>
<finalName>war</finalName>
</configuration>
......
</plugin>
你爲什麼這樣做?項目類型戰爭涵蓋大多數情況。 –
我編輯問題的原因。 – angelokh
在戰爭項目上調用包階段時,它首先在目標目錄中創建一個包含戰爭內容的目錄,然後創建戰爭文件。你不能使用那個目錄嗎? –