从原型创建项目时更新 pom 中的主类

Posted

技术标签:

【中文标题】从原型创建项目时更新 pom 中的主类【英文标题】:Update main class in pom when creating a project from an archetype 【发布时间】:2021-12-16 21:47:31 【问题描述】:

我正在开发一个利用 Maven Archetypes 的应用程序。我已经从中创建了一个原型和一个项目,但是 pom 文件中的主类引用没有得到更新,导致生成的项目(具有不同的包名称)引用了原始项目的主类。在衍生项目的生成过程中如何更新?

例如: 如果父项目在包com.my_company.artifact_a 中有Application.class,那么在pom 中我们有一个com.my_company.artifact_a.Application 的引用;当我们生成具有不同组和工件 id 的派生时,这意味着现在应用程序位于假设 com.your_company.artifact_b.Application 中,当我希望将其更新为新的时,pom 文件中的引用仍将是 com.my_company.artifact_a.Application运行时的信息maven archetype:create-from-project

【问题讨论】:

【参考方案1】:

您可以在原型的源文件中使用原型变量。这些变量的值将插入到您生成的源文件中。

文件src/main/resources/archetype-resources/src/main/java/Application.java:

package $package;

public class Application 
...

将设置包名,Application.java 文件将放在指定包名的正确文件夹中。

【讨论】:

我用一个例子更新了我的问题,因为类中的包引用在生成过程中更新得很好。另外,我的理解是在类中使用占位符会使父应用程序无法运行,不是吗? 您也可以在生成的 pom.xml 中添加这些占位符变量

以上是关于从原型创建项目时更新 pom 中的主类的主要内容,如果未能解决你的问题,请参考以下文章

在 pom.xml 中为 Kotlin 中的 Spring Boot 项目指定 Main 类

SpringBoot:无法与maven创建战争。无法找到主类

SpringBoot:无法与maven创建战争:无法找到主类

无法从 springsource 中的原型创建项目

抑制 sbt-assembly 中的主类

如何直接从文件中将项目添加到 Java 中的 ArrayList?