28

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

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

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

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

4

9 回答 9

18

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

第 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 网站,不推荐使用目标以支持使用generate。我想展示如何独立于任何 IDE 或 IDE 插件来做到这一点。

于 2012-08-04T14:06:03.930 回答
15

听起来不是居高临下,而是:

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

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

我不知道有任何 maven 命令可以在不创建新 pom 文件的情况下为您创建此结构。

于 2012-07-26T12:28:42.340 回答
2

在我看来,你好像在用一个小问题制造一个大问题。

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

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

于 2012-07-26T12:02:23.393 回答
2

类似于马特的回答,这些行将在 Microsoft Windows 操作系统上创建默认的 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 命令,或者使用原型代替,即快速启动。盒子里已经有文件夹结构了。

于 2017-02-22T15:13:55.830 回答
0

Maven 可以使用快速入门原型为您生成它:

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

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

于 2017-07-26T03:14:51.810 回答
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"
于 2018-10-26T20:13:42.823 回答
0

使用Maven 构建助手插件。用法非常简单。只需在 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>
于 2016-03-27T01:42:50.253 回答
0

正如上面许多答案所建议的那样,我发现这是最快的

mkdir -p src/{main,test}/{java,resources}

这将生成以下结构

.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   └── resources
    └── test
        ├── java
        └── resources

请注意如何通过在花括号中传递子目录名称,生成多个子目录。例如mkdir -p src/{dir1,dir2,dir3}会给你这个:

.
└── src
    ├── dir1
    ├── dir2
    └── dir3
于 2021-12-07T14:01:16.483 回答
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 答案。

于 2019-04-08T17:59:52.230 回答