簡體   English   中英

Maven:從 pom.xml 創建目錄結構

[英]Maven: create directory structure from pom.xml

我有 Maven 一個 pom.xml 文件(從另一個項目復制並改編),我想為新項目生成目錄結構。 哪個命令可以做到這一點?

請注意,我在網上找到了無數示例,其中解釋了如何使用mvn archetype:create創建 pom.xml 文件和目錄結構,但是我已經有了 pom.xml,我想根據沒有在命令行上指定 groupId、artifactId 等。

mvn archetype:create-from-project似乎也基於另一個 pom.xml (?) 創建了一個 pom.xml,但我只想要目錄。 先感謝您!

編輯:我知道這不是一個“大問題”,因為我可以手動創建目錄:) 我已經做了很多次了,我總覺得必須有一個更聰明的方法來做到這一點......

我同意應該有一種方法來指定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網站的說法 ,不贊成使用generate 我想展示如何獨立於任何IDE或IDE插件來完成它。

不要聽起來居高臨下,但是:

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

(或隨意替換不同的目錄)。

我不知道任何maven命令將為您創建此結構而不創建新的pom文件。

在我看來,你從一個小問題中解決了一個大問題。

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

正如Peter Lawrey所說,許多現代IDE都能夠創建Maven項目結構。

與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命令,也可以使用原型,即快速啟動。 框中已有文件夾結構。

使用Maven Build Helper插件 用法非常簡單。 只需在你的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>

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

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

然后,將現有的pom.xml復制並粘貼到與生成的pom.xml相同的目錄中。

打開命令行,使用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"

我用這個單線:

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的答案類似。

正如上面的許多答案所建議的那樣,我發現這是最快的

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

這將生成以下結構

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

請注意如何通過在花括號中傳遞子目錄名稱來生成 1 個以上的子目錄。 例如mkdir -p src/{dir1,dir2,dir3}會給你這個:

.
└── src
    ├── dir1
    ├── dir2
    └── dir3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM