Maven 有没有办法将文件集指定为命令行参数?

Maven 有没有办法将文件集指定为命令行参数?,maven,mojo,Maven,Mojo,我正在创建一个无需运行项目的Mojo 我想使用类似于org.apache.maven.model.FileSet(提供包含和排除的多个目录)的东西作为@参数,但我的问题是我需要能够使用命令行设置这些值 你知道如何做到这一点吗 见: 聚甲醛 so 多值maven插件 1 maven插件 org.apache.maven maven插件api 3.3.3 org.apache.maven.plugin-tools maven插件注释 3.4 假如 org.apache.maven.plu

我正在创建一个无需运行项目的Mojo

我想使用类似于
org.apache.maven.model.FileSet
(提供包含和排除的多个目录)的东西作为
@参数
,但我的问题是我需要能够使用命令行设置这些值

你知道如何做到这一点吗

见:

聚甲醛
so
多值maven插件
1
maven插件
org.apache.maven
maven插件api
3.3.3
org.apache.maven.plugin-tools
maven插件注释
3.4
假如
org.apache.maven.plugins
maven插件
3.4
魔咒
包so;
导入java.util.array;
导入java.util.HashMap;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Map;
导入java.util.Set;
导入java.util.stream.collector;
导入org.apache.maven.model.FileSet;
导入org.apache.maven.plugin.AbstractMojo;
导入org.apache.maven.plugin.MojoExecutionException;
导入org.apache.maven.plugins.annotations.Mojo;
导入org.apache.maven.plugins.annotations.Parameter;
@Mojo(name=“values”,requireproject=false)
公共类MultipleValuesMojo扩展了AbstractMojo
{
@参数(property=“array”,required=true)
私有字符串[]数组;
@参数(property=“list”,required=true)
私人名单;
@参数(property=“set”,required=true)
私有字符串[]集合元素;
私有集;
@参数(property=“map”,required=true)
私有字符串[]映射项;
私人地图;
@参数(property=“includes”,required=true)
私人名单包括:;
@参数(property=“excludes”,required=true)
私人名单不包括在内;
@凌驾
public void execute()引发MojoExecutionException异常
{
getLog().info(“数组:”+Arrays.toString(数组));
getLog().info(“List:+List.toString());
set=Arrays.stream(setElements).collect(Collectors.toSet());//使用Java>=8
addSetElementsToSet();//使用Java s,s->s));//使用Java>=8

putMapEntriesToMap();//使用Java查找解决方案的任何人:

-D<some-property>.fileSet=['path-to-fileset']
-D.fileSet=['path-to-fileSet']
为我做了这个把戏。它可能需要稍微修改,这取决于你正在配置的插件,但你明白了


在Maven 3.5.0上测试了一个令人印象深刻的例子,说明了如何在命令行上传递参数,但文件集不是其中之一。这实际上一点也不能回答OP的问题。向下投票。@kyl191现在好点了吗?@MiguelFerreira[继续]我很确定对象的(层次结构)成员变量结构不能用一个属性值来表示,除非您自己在该属性值中引入并计算相应的结构——例如,使用JSON或XML来扩展我在前面的评论中提到的更简单的示例。因此,是的,您是对的,因为它不容易实现尤其是当需要通过命令行传递复杂对象的值时。@MiguelFerreira“最终被删除了”严重怀疑通过命令行指定此属性自最初实现“merge”mojo以来是否有效,因为支持结构不是简单的字符串,而是复杂对象”。你是如何在Mojo中声明
的?你从哪里得到这个
.fileSet=['path-to-fileSet']
语法的?除了使用
////${fileSet}之外,我无法实现这一点
和POM中的
/path to fileset
声明,可以在命令行上用
-DfileSet=other path to fileset
覆盖该声明。但OP并不想要这样:“一个不需要运行项目的Mojo”。我做了一些研究来记住我到底为什么需要这个。这是我答案的来源:谢谢你从2018年开始挖掘出来。但是,在我自己的代码中尝试了很多尝试和错误之后,这里的语法似乎是假的。我用
-DscanSet.fileSet=src/main
尝试了
org.owasp:dependency check maven
插件,得到了一个<代码>构建成功
。然后我尝试了
-DscanSet.fileSet=['src/main']-X
并在构建日志中找到:
[DEBUG](f)scanSet=[]
。插件的正常输出与这两个参数都没有任何区别,因此如果没有
-X
并搜索近1000条调试行,您就无法识别这一点。I和。