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

时间:2012-07-26 11:45:49

标签: java maven maven-3

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

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

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

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

8 个答案:

答案 0 :(得分:15)

我同意应该是一种指定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网站that goal is deprecated赞成使用{{1} }}。我想展示如何独立于任何IDE或IDE插件来完成它。

答案 1 :(得分:11)

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

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

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

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分: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命令,也可以使用原型,即快速启动。框中已有文件夹结构。

答案 4 :(得分: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>

答案 5 :(得分:0)

Maven可以使用快速启动原型为您生成:

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

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

答案 6 :(得分: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"

答案 7 :(得分: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答案。