8

请帮助我,我是 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>
4

3 回答 3

14

@khmarbaise 是正确的,使用 maven,您最好尽可能遵循约定 - 否则您应该使用不同的构建工具,否则您最终会一直与之抗争。也就是说,您可以执行以下操作来实现您的目标:

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

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

使用 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>
于 2013-01-03T01:58:38.107 回答
3

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

于 2013-01-02T08:51:46.390 回答
2

与接受的答案非常相似,我使用的是安装在 docker 中的部署文件夹

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <outputDirectory>${project.build.directory}/deployments</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
于 2018-02-08T22:24:10.427 回答