2013-01-02 75 views
7

請幫助我我是Maven的新手。我正試圖從Maven項目文件夾的不同目錄中生成一個目標文件夾。根據我的要求,當我構建我的Maven項目時,生成的war文件應該放置在另一個文件夾(如C:\ naresh文件夾)中。配置Maven以在項目目錄之外生成輸出

這裏我的代碼:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <packaging>war</packaging> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>project</artifactId> 
    <version>1.0</version> 

    <build> 
    <directory>${project.basedir}/target</directory> 
    <outputDirectory>C:\Software\${project.basedir}/target</outputDirectory> 

    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <warSourceDirectory>WebContent</warSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 

    </build> 
</project> 
+1

問題是具有不同的佈局,爲什麼你需要一個部署文件夾? – khmarbaise

+0

@khmarbaise,有時候我們會做這種安排來加速本地的開發和測試。但是這些配置當然不會真正發佈到PROD或UAT環境中。 – Jaikrat

+0

這種配置不會提高性能。正好相反的原因,這將在每個CI solutoin等失敗。 – khmarbaise

回答

10

@khmarbaise是正確的,使用maven你最好遵循以下約定 - 否則你應該使用不同的構建工具,否則你最終會以整體的方式來對抗它。這就是說,你可以執行以下操作來實現自己的目標:

<build> 
    <outputDirectory>${user.home}/${project.artifactId}/target</outputDirectory> 
    ... 
</build> 

它使用user.home系統屬性的根目錄下,並創建了<artifactId/>(「項目」)的名字命名的文件夾中的輸出目錄。所有的Java系統properties都可以在pom中找到。如果你需要在其他地方創建它,你可以將其設置爲相對於上面的目錄。

使用maven-戰爭插件來代替:

由於您的問題表明你真的只需要神器(war文件)輸出到不同的目錄,我建議你修改配置爲output directory在Maven-War-plugin。例如:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0</version> 
     <configuration> 
      <outputDirectory>${user.home}/${project.artifactId}</outputDirectory> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

謝謝先生,我會試試這種方式.. – Naresh

0

與接受的答案非常相似,我使用的是安裝在泊塢窗

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <outputDirectory>${project.build.directory}/deployments</outputDirectory> 
      </configuration> 
     </plugin> 
    </plugins>