Maven:从pom.xml创建目录结构

问题描述 投票:23回答:8

我有一个pom.xml文件(从另一个项目复制并改编),我想生成一个新项目的目录结构。哪个命令可以做到这一点?

请注意,我在网上找到了无数的例子,它解释了如何使用mvn archetype:create来创建一个pom.xml文件和目录结构,但我已经有了一个pom.xml,我想创建基于的目录在命令行上没有指定groupId,artifactId等。

mvn archetype:create-from-project似乎也创建了一个基于另一个pom.xml(?)的pom.xml,但我只想要这些目录。先感谢您!

编辑:我知道这不是一个“大问题”,因为我可以手动创建目录:)我已经做了很多次了,我总觉得必须有一个更聪明的方法来做...

java maven maven-3
8个回答
12
投票

不要听起来居高临下,但是:

mkdir -p src/main/java
mkdir -p src/main/resources
mkdir -p src/test/java
mkdir -p src/test/resources

(或随意替换不同的目录)。

我不知道任何maven命令将为您创建此结构而不创建新的pom文件。


16
投票

我同意应该有一种方法来指定maven本身应该查看我的pom并从中生成project / dir结构。我不知道如何做到这一点,但这就是我所做的:

第1步:将已创建的pom.xml移动到其他位置(如果您已经在将运行下一个命令的目录中使用maven,则会抱怨)

第2步:从命令行,在新的maven项目目录中执行:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=my.package.path -DartifactId=myartifact

您必须编辑groupId和artifactId以匹配您的pom(叹气),但这会为您创建基本目录结构以及默认Java类和单元测试。

第3步:将pom.xml移动/复制到该项目目录中

第4步:运行一些maven命令,如mvn clean packagemvn dependency:tree,开始下载依赖项

注意:我包括这个答案,因为之前的一些答案建议使用mvn archetype:create,但根据maven网站that goal is deprecated赞成使用generate。我想展示如何独立于任何IDE或IDE插件来完成它。


2
投票

在我看来,你从一个小问题中解决了一个大问题。

我尝试使用mvn archetype:create-from-project ...然后只用原始的POM文件替换生成的POM文件。

正如Peter Lawrey所说,许多现代IDE都能够创建Maven项目结构。


2
投票

与Matt的回答类似,这些行将在Microsoft Windows OS上创建默认的maven文件夹结构。从pom.xml所在的目录运行它们:

mkdir -p src/main/java
mkdir -p src/main/resources
mkdir -p src/test/java
mkdir -p src/test/resources

我想知道为什么没有maven命令。您可以运行上面的mkdir命令,也可以使用原型,即快速启动。框中已有文件夹结构。


0
投票

使用Maven Build Helper plugin。用法非常简单。只需在你的pom的插件部分配置,并调用适当的mvn目标。

从文档:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.10</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

0
投票

Maven可以使用quickstart原型为您生成它:

mvn archetype:generate \
    -DgroupId=com.mydomain \
    -DartifactId=my-project \
    -DarchetypeArtifactId=maven-archetype-quickstart

然后,将现有的pom.xml复制并粘贴到与生成的pom.xml相同的目录中。


0
投票

打开命令行,使用pom.xml将目录更改为该文件夹 并将其传入CMD:

echo This will create all required folders for maven project.
echo creating  Application\Library sources
MD "src\main\java"
echo creating  Application\Library resources
MD "src\main\resources"
echo creating  Resource filter files
MD "src\main\filters"
echo creating  Web application sources
MD "src\main\webapp"
echo creating  Test sources
MD "src\test\java"
echo creating  Test resources
MD "src\test\resources"
echo creating  Test resource filter files
MD "src\test\filters"
echo creating  Integration Tests (primarily for plugins)
MD "src\it"
echo creating  Assembly descriptors
MD "src\assembly"
echo creating  Site
MD "src\site"

0
投票

我用这个单线:

touch pom.xml && mkdir -p src/main/java && mkdir -p src/main/resources && mkdir -p src/test/java && mkdir -p src/test/resources

它还创建了一个空的pom.xml。为了快速访问,我把它放在我的笔记中。除此之外,它与@Matt的答案类似。

© www.soinside.com 2019 - 2024. All rights reserved.