Cannot create instance of interface org.apache.maven.artifact.repository.Artifac

maven构建子模块时报错,cmd如下:

mvn archetype:create -DgroupId=com.niciware -DartifactId=upt-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

 

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:create (default-cli) on project upt: Unable to parse configuration of mojo org.apache.maven.plugins:maven-archetype-plugin:2.4:create for parameter #: Cannot create instance of interface org.apache.maven.artifact.repository.ArtifactRepository: org.apache.maven.artifact.repository.ArtifactRepository.<init>() -> [Help 1]

 

很简单,只要吧 create 换成 generate

mvn archetype:generate -DgroupId=com.niciware -DartifactId=upt-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

`org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter` 是 Apache Maven 中用于过滤依赖工件(artifacts)的接口。它在 Maven 项目处理依赖解析和过滤的过程中扮演重要角色。 ### 功能介绍 `ArtifactsFilter` 的主要功能是对一组 Maven 工件进行过滤,决定哪些工件应该被包含在项目的构建过程中,哪些应该被排除。通过实现这个接口,可以根据不同的条件(如工件的groupId、artifactId、版本号、作用域等)来定制过滤逻辑,从而满足特定项目的需求,例如排除某些测试依赖、特定版本的依赖等。 ### 使用方法 以下是使用 `ArtifactsFilter` 的一般步骤和示例代码: #### 1. 实现 `ArtifactsFilter` 接口 需要创建一个类来实现 `ArtifactsFilter` 接口,并实现其 `filter` 方法。以下是一个简单的示例,该示例过滤掉所有 `test` 作用域的依赖: ```java import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException; import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter; import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts; import org.apache.maven.shared.artifact.filter.collection.ProjectTransitivityFilter; import org.apache.maven.shared.artifact.filter.collection.ScopeFilter; import org.apache.maven.shared.artifact.filter.collection.TypeFilter; import org.apache.maven.shared.artifact.resolve.ArtifactResolver; import org.apache.maven.shared.artifact.resolve.ArtifactResolverException; import org.apache.maven.shared.artifact.resolve.ArtifactResult; import org.apache.maven.shared.artifact.resolve.DefaultArtifactResolver; import org.apache.maven.shared.artifact.resolve.filter.AndArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.ArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.ScopeArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.TypeArtifactFilter; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; import org.apache.maven.shared.dependency.graph.DependencyNode; import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor; import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor; import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException; import org.apache.maven.shared.dependency.tree.DependencyTreeNode; import org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyTreeNodeVisitor; import org.apache.maven.shared.dependency.tree.traversal.DependencyTreeNodeVisitor; import org.apache.maven.shared.utils.StringUtils; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectResult; import org.sonatype.aether.collection.DependencyCollectionException; import org.sonatype.aether.graph.Dependency; import org.sonatype.aether.graph.DependencyFilter; import org.sonatype.aether.graph.DependencyNode; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.resolution.ArtifactRequest; import org.sonatype.aether.resolution.ArtifactResolutionException; import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.resolution.DependencyResolutionException; import org.sonatype.aether.util.filter.AndDependencyFilter; import org.sonatype.aether.util.filter.ScopeDependencyFilter; import org.sonatype.aether.util.filter.TypeDependencyFilter; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; // 自定义过滤器类 class TestScopeExclusionFilter implements ArtifactsFilter { @Override public boolean include(Artifact artifact) { // 排除测试作用域的依赖 return !"test".equals(artifact.getScope()); } } ``` #### 2. 使用自定义过滤器 在 Maven 插件或代码中使用自定义的过滤器来过滤依赖工件。以下是一个简单的示例: ```java import org.apache.maven.artifact.Artifact; import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter; import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts; import org.apache.maven.shared.artifact.filter.collection.ProjectTransitivityFilter; import org.apache.maven.shared.artifact.filter.collection.ScopeFilter; import org.apache.maven.shared.artifact.filter.collection.TypeFilter; import org.apache.maven.shared.artifact.resolve.ArtifactResolver; import org.apache.maven.shared.artifact.resolve.ArtifactResolverException; import org.apache.maven.shared.artifact.resolve.ArtifactResult; import org.apache.maven.shared.artifact.resolve.DefaultArtifactResolver; import org.apache.maven.shared.artifact.resolve.filter.AndArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.ArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.ScopeArtifactFilter; import org.apache.maven.shared.artifact.resolve.filter.TypeArtifactFilter; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; import org.apache.maven.shared.dependency.graph.DependencyNode; import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor; import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor; import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException; import org.apache.maven.shared.dependency.tree.DependencyTreeNode; import org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyTreeNodeVisitor; import org.apache.maven.shared.dependency.tree.traversal.DependencyTreeNodeVisitor; import org.apache.maven.shared.utils.StringUtils; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectResult; import org.sonatype.aether.collection.DependencyCollectionException; import org.sonatype.aether.graph.Dependency; import org.sonatype.aether.graph.DependencyFilter; import org.sonatype.aether.graph.DependencyNode; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.resolution.ArtifactRequest; import org.sonatype.aether.resolution.ArtifactResolutionException; import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.resolution.DependencyResolutionException; import org.sonatype.aether.util.filter.AndDependencyFilter; import org.sonatype.aether.util.filter.ScopeDependencyFilter; import org.sonatype.aether.util.filter.TypeDependencyFilter; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class ArtifactFilterExample { public static void main(String[] args) { // 假设这是项目的依赖工件列表 List<Artifact> artifacts = new ArrayList<>(); // 填充 artifacts 列表... // 创建自定义过滤器 ArtifactsFilter filter = new TestScopeExclusionFilter(); // 过滤工件 List<Artifact> filteredArtifacts = new ArrayList<>(); for (Artifact artifact : artifacts) { if (filter.include(artifact)) { filteredArtifacts.add(artifact); } } // 输出过滤后的工件 for (Artifact artifact : filteredArtifacts) { System.out.println(artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion()); } } } ``` ### 注意事项 - 在实际项目中,通常会结合 Maven 的插件和工具来使用 `ArtifactsFilter`,例如在 `pom.xml` 中配置依赖过滤插件。 - 可以组合多个过滤器来实现更复杂的过滤逻辑,例如同时排除特定 `groupId` 和 `test` 作用域的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值