Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有其他默认maven原型属性_Maven_Maven Archetype - Fatal编程技术网

是否有其他默认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原型,它有一系列自定义属性

例:


一些数据库名称
本地服务器
...
当基于这个原型生成一个新项目时,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知道坐标,因为您在生成过程中输入了坐标。将相关列表插入到答案中比提供链接(可能过一会儿就死了)要好。