【问题标题】:Created archetype not creating folders under package创建的原型没有在包下创建文件夹
【发布时间】:2021-09-09 09:52:56
【问题描述】:

使用 Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)

项目结构如下:

My-archetype
| -- pom.xml
`--src
  `--main
    `resources
      |-- META-INF
         `--maven
             `--archetype-metadata.xml
       |--archetype-resources
          |--pom.xml
          |--log4j2.xml
          `--src
             |--main
             |   `--java
             |       `--App.java
             |        `--conf 

注意:conf 是一个目录

项目pom是

    <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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>demo</groupId>
  <artifactId>my-archetype</artifactId>
  <version>1</version>
  <packaging>maven-archetype</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>3.1.1</version>
      </extension>
    </extensions>
  </build>
</project>

archetype-metadata.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor
xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/
archetype-descriptor/1.1.0
http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="at"
xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-des
criptor/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <fileSets>
    <fileSet filtered="true" encoding="UTF-8">
      <directory></directory>
      <includes>
        <include>changeme.gitignore</include>
        <include>log4j2.xml</include>
      </includes>
    </fileSet>
    <fileSet filtered="false" packaged="true" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
      <include>**/*.java</include>
      </includes>
    </fileSet>
    <fileSet filtered="false" packaged="false" encoding="UTF-8">
      <directory>toplevel</directory>
    </fileSet>
  </fileSets>
</archetype-descriptor>

当我构建项目时,我 (mvn install) 有一条警告消息: [警告] 没有 Archetype IT 项目:找不到根“项目”目录。

我在 windows 10 环境下批处理文件是:

mvn archetype:generate "-DarchetypeGroupId=demo"
"-DarchetypeArtifactId=my-archetype" "-DarchetypeVersion=1" "-DgroupId=demo"
"-DartifactId=at" "-Dpackage=d" "-Dversion=0.0.1-SNAPSHOT"
"-DinteractiveMode=false"

输出是:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom
>-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom
]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cli) >
generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cli) <
generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.0:generate (default-cli) @
standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] Archetype repository not defined. Using the one from
[demo:my-archetype:1] found in catalog local
[INFO]
----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype:
my-archetype:1
[INFO]
----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: demo
[INFO] Parameter: artifactId, Value: at
[INFO] Parameter: version, Value: 0.0.1-SNAPSHOT
[INFO] Parameter: package, Value: d
[INFO] Parameter: packageInPathFormat, Value: d
[INFO] Parameter: package, Value: d
[INFO] Parameter: version, Value: 0.0.1-SNAPSHOT
[INFO] Parameter: groupId, Value: demo
[INFO] Parameter: artifactId, Value: at
[INFO] Project created from Archetype in dir:
C:\Users\pshan\eclipse-workspace\my-archetype\x\at
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time:  3.172 s
[INFO] Finished at: 2021-09-05T11:47:43-04:00
[INFO]
------------------------------------------------------------------------

\toplevel 的目录已创建

在\src\main\java\d 的目录被创建,文件App.java 被创建 并且包名正确放置在文件中。

问题是根本没有创建目录 conf。我期待 它在 在\src\main\java\d\conf

但它没有被创建。我做错了什么?

我确实注意到了一件事 .. 如果我放置一个像 delme.txt 这样的文件并添加 **/*.txt 到 archetype-metadata 文件夹和文件是 创建的。但是我只想要一个空文件夹。

【问题讨论】:

  • 目录conf是否包含文件?
  • 在测试中我确实在 conf 中放置了一个文件,然后它被创建,似乎可能需要,但是在这种情况下,我不希望在 conf 中有任何文件

标签: java maven


【解决方案1】:

我有一个创建空目录的原型。我没有在archetype-resources/src/main 中指定该目录。相反,我将它放在META-INF/maven/archetype-metadata.xml 中,如下所示:

<fileSets>
    <fileSet filtered="true" encoding="UTF-8">
        <directory>src/main/scripts</directory>
    </fileSet>
</fileSets>

在使用原型后,我得到了一个空目录,正如预期的那样。

【讨论】:

  • 是的,我也看到了,但是在我的情况下,我需要使用 packaged=true 的 fileSet 参数,因为我希望在包名下创建目录
  • 您是否尝试按照我的描述将packaged=true 添加到配置中?
  • 是删除文件夹然后添加src/main/java/conf 在这种情况下,它会创建一个文件夹 src/main/java/conf/demo,其中 demo 是包,当我删除 packaged = true 时,它​​会创建 src/main/java/conf。我正在寻找的是 src/main/java/$packagename/conf
猜你喜欢
  • 2020-04-21
  • 2017-04-18
  • 2016-11-03
  • 1970-01-01
  • 2015-07-01
  • 2020-03-22
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多