2013-01-02 55 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>