配置Maven以在项目目录外生成输出

Nar*_*esh 7 maven-2 maven-3

请帮帮我,我是Maven的新手.我试图在Maven项目文件夹的不同目录中生成目标文件夹.根据我的要求,当我构建我的maven项目时,生成的war文件应放在另一个文件夹中,如C:\naresh文件夹.

这是我的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

kld*_*is4 12

@khmarbaise是正确的,有了maven,你最好在可能的情况下遵循惯例 - 否则你应该使用不同的构建工具,否则你最终会全力以赴.也就是说,您可以执行以下操作来实现目标:

<build>
    <outputDirectory>${user.home}/${project.artifactId}/target</outputDirectory>
    ...
</build>
Run Code Online (Sandbox Code Playgroud)

这使用user.home系统属性作为根目录,并在以<artifactId/>('project')命名的文件夹中创建输出目录.pom中提供了所有Java系统属性.如果您需要在其他地方创建它,您可以将其设置为相对于上面的目录.

改为使用maven-war-plugin:

由于您的问题表明您确实只需要将工件(war文件)输出到其他目录,我建议您修改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>
Run Code Online (Sandbox Code Playgroud)