gpt4 book ai didi

build-process - 如何从基于 artifactId 的多模块项目使用目录中创建我的原型(prototype)?

转载 作者:行者123 更新时间:2023-12-04 17:12:28 33 4
gpt4 key购买 nike

我已经使用 archetype:create-from-project 从多模块项目中创建了一个原型(prototype)。

archetype-metadata.xml 如下所示,我想要的是当我运行 mvn archetype:generate 时可以使用我提供的 archetypeId 而不是使用固定目录来修改“dir”。可以这样做吗?

 <?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="service-parent"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modules>
<module id="service-def" dir="service-def" name="service-def">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</module>
<module id="service" dir="service" name="service">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/test/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**/*.sql</include>
<include>**/*.dtd</include>
</includes>
</fileSet>
</fileSets>
</module>
<module id="service-web" dir="service-web" name="service-web">
<fileSets>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</module>
</modules>
</archetype-descriptor>

这是原型(prototype)的结构:
 ├── pom.xml
└── src
├── main
│   └── resources
│   ├── archetype-resources
│   │   ├── pom.xml
│   │   ├── service
│   │   │   ├── pom.xml
│   │   │   └── src
│   │   │   ├── main
│   │   │   │   └── java
│   │   │   └── test
│   │   │   ├── java
│   │   │   └── resources
│   │   ├── service-def
│   │   │   ├── pom.xml
│   │   │   └── src
│   │   │   └── main
│   │   │   └── java
│   │   └── service-web
│   │   ├── pom.xml
│   │   └── src
│   │   └── main
│   │   ├── resources
│   │   │   ├── dao-context.xml
│   │   │   ├── hibernate.cfg.xml
│   │   │   └── single-context.xml
│   │   └── webapp
│   │   └── WEB-INF
│   │   ├── jboss-web.xml
│   │   ├── remoting-servlet.xml
│   │   └── web.xml
│   └── META-INF
│   └── maven
│   └── archetype-metadata.xml
└── test
└── resources
└── projects
└── basic
├── archetype.properties
└── goal.txt

最佳答案

您需要使用 rootArtifactId 占位符,例如:

 <?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="service-parent"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modules>
<module id="${rootArtifactId}-def" dir="__rootArtifactId__-def" name="${rootArtifactId}-def">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</module>
<module id="${rootArtifactId}" dir="__rootArtifactId__" name="${rootArtifactId}">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/test/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**/*.sql</include>
<include>**/*.dtd</include>
</includes>
</fileSet>
</fileSets>
</module>
<module id="${rootArtifactId}-web" dir="__rootArtifactId__-web" name="${rootArtifactId}-web">
<fileSets>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</module>
</modules>

使用 __rootArtifactId__ 前缀重命名模块文件夹。

您可以在 http://code.google.com/p/open-archetypes/source/browse/multi-javaee5-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml 中看到此类原型(prototype)的示例。

关于build-process - 如何从基于 artifactId 的多模块项目使用目录中创建我的原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714833/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com