是否有其他默认maven原型属性
我正在创建一个maven原型,它有一系列自定义属性 例:是否有其他默认maven原型属性,maven,maven-archetype,Maven,Maven Archetype,我正在创建一个maven原型,它有一系列自定义属性 例: 一些数据库名称 本地服务器 ... 当基于这个原型生成一个新项目时,maven知道一些默认变量,比如groupId、artifactId、version。maven是否知道其他琐碎的变量,如env.user、user、host、path、basedir或任何其他变量? 哪些是? 我怎样才能得到它们 谢谢。此链接列出了Maven原型的内置属性- 内置属性包括: groupId rootArtifactId—项目工件ID,在与artif
一些数据库名称
本地服务器
...
当基于这个原型生成一个新项目时,maven知道一些默认变量,比如groupId、artifactId、version。maven是否知道其他琐碎的变量,如env.user、user、host、path、basedir或任何其他变量?
哪些是?
我怎样才能得到它们
谢谢。此链接列出了Maven原型的内置属性- 内置属性包括:
- groupId
- rootArtifactId—项目工件ID,在与artifactId相同的单模块项目中
- artifactId-模块工件ID
- 版本
- package–基本java包名,在项目创建期间放在src/main/java中
- 我意识到这是一个老问题,但我在早些时候遇到了这个问题,并投了赞成票。我也在想同样的问题,现在我已经提出了一个解决方案/解决方案来启用对这些属性的访问
我创建了自己的Maven插件,名为
属性设置器Maven plugin
,用于设置系统,最重要的是,设置执行属性。该插件的配置允许指定任意数量的属性和值(因为它们是在POM中定义的,所以可以访问所有正常变量)。当原型插件运行时(在与我的自定义插件相同的Maven执行中),它读取执行属性并查找您配置的任何属性
我的Maven命令如下所示:
mvn \
com.example.build.maven:property-setter-maven-plugin:0.1:set-properties \
archetype:generate \
-DarchetypeGroupId=... -DarchetypeArtifactId=... -DarchetypeVersion=... -DartifactId=...
POM中位于生成原型的同一目录中的配置如下所示:
mvn \
com.example.build.maven:property-setter-maven-plugin:0.1:set-properties \
archetype:generate \
-DarchetypeGroupId=... -DarchetypeArtifactId=... -DarchetypeVersion=... -DartifactId=...
。。。
com.example.build.maven
属性设置器maven插件
0.1
设置属性
${project.version}
${user.name}
...
插件代码(可修改为仅设置所有系统属性)如下所示:
package com.example.build.maven.mojo;
导入org.apache.maven.execution.MavenSession;
导入org.apache.maven.model.Plugin;
导入org.apache.maven.model.PluginExecution;
导入org.apache.maven.plugin.AbstractMojo;
导入org.apache.maven.plugin.MojoExecution;
导入org.apache.maven.plugin.MojoExecutionException;
导入org.apache.maven.plugin.MojoFailureException;
导入org.apache.maven.project.MavenProject;
导入org.codehaus.plexus.util.xml.Xpp3Dom;
导入java.util.Properties;
/**
*PropertySetterMojo酒店
*
*@目标集属性
*@阶段验证
*@自0.1以来
*/
公共类PropertySetterMojo扩展了AbstractMojo
{
/**
*@parameter default value=“${project}”
*@所需参数
*@readonly
*/
私人马文项目;
/**
*@parameter expression=“${session}”
*@readonly
*/
非公开会议;
/**
*@parameter expression=“${mojoExecution}”
*@readonly
*@必需
*/
受保护的执行;
/**
*
*/
@凌驾
public void execute()抛出MojoExecutionException,MojoFailureException
{
尝试
{
Plugin Plugin=execution.getPlugin();
String executionId=execution.getExecutionId();
PluginExecution PluginExecution=plugin.getExecutionsAsMap().get(executionId);
Xpp3Dom配置=((Xpp3Dom)pluginExecution.getConfiguration());
Properties executionProperties=session.getExecutionProperties();
对于(int i=0;i“+propertyValue”);
}
}
捕获(例外e)
{
抛出新的MojoExecutionException(“设置属性失败”,e);
}
}
}
除了Daniel Stolz的答案,这里还有Maven原型规范页面的链接:
作为规范的摘录,突出显示了属性名称:
[……]
Velocity引擎在项目文件生成过程中使用的主要属性是groupId、artifactId、version和package
可以定义在生成文件之前必须赋值的其他属性
[……]
嗨,米歇尔,请澄清你想用这些变量做什么。原型使您可以从模板(原型)创建类似的项目,但如果需要使用f.e.系统属性,则不必在从原型生成项目时设置这些属性。Maven知道坐标,因为您在生成过程中输入了坐标。将相关列表插入到答案中比提供链接(可能过一会儿就死了)要好。