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

Maven 2 配置Maven以在项目目录外生成输出,maven-2,maven-3,Maven 2,Maven 3,请帮帮我,我是马文的新手。我试图在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://mav

请帮帮我,我是马文的新手。我试图在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>

战争
4.0.0
com.test
项目
1
${project.basedir}/target
C:\Software\${project.basedir}/target
org.apache.maven.plugins
maven战争插件
网络内容

关于Maven,您必须了解的第一件事是:Maven有它的约定其中一个约定是有一个,而不是其他地方。此外,绝对禁止将一些绝对文件夹定义放入pom中。

@khmarbaise是正确的,使用maven时,您最好尽可能遵循约定-否则您应该使用不同的构建工具,否则您将一路与之抗争。也就是说,您可以通过以下方式实现您的目标:

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

与公认的答案非常相似,我使用的是一个安装在docker中的deployments文件夹

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

org.apache.maven.plugins
maven战争插件
${project.build.directory}/deployments

问题是为什么您需要不同的布局?@khmarbaise,有时我们会做这种安排,以加快本地的开发和测试。当然,这些配置并没有真正发布到PROD或UAT环境中。这种配置不会提高性能。恰恰相反,这将在每个CI解决方案等上失败。
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <outputDirectory>${project.build.directory}/deployments</outputDirectory>
            </configuration>
        </plugin>
    </plugins>