请帮帮我,我是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>
答案 0 :(得分:12)
@khmarbaise是正确的,maven你最好在可能的情况下遵循惯例 - 否则你应该使用不同的构建工具,否则你最终会全力以赴。也就是说,您可以执行以下操作来实现目标:
<build>
<outputDirectory>${user.home}/${project.artifactId}/target</outputDirectory>
...
</build>
这使用user.home
系统属性作为根目录,并在以<artifactId/>
('project')命名的文件夹中创建输出目录。所有Java系统properties都可以在pom中找到。如果您需要在其他地方创建它,您可以将其设置为相对于上面的目录。
改为使用maven-war-plugin:
由于你的问题表明你真的只需要将工件(war文件)输出到另一个目录,我建议你修改maven-war-plugin中output directory的配置。例如:
<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>
答案 1 :(得分:2)
你必须要了解Maven的第一件事是:Maven有它的约定其中一个约定是target folder which is located under the current project而不是其他地方。此外,绝对禁止将一些绝对的文件夹定义放入你的pom。
答案 2 :(得分:0)
与接受的答案非常相似,我使用的是安装在docker中的部署文件夹
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}/deployments</outputDirectory>
</configuration>
</plugin>
</plugins>