如何手动将依赖项添加到Gradle';s MavenPom/MavenPom出版物?
我正在开发一个插件。此插件附加到一个项目,该项目既不应用如何手动将依赖项添加到Gradle';s MavenPom/MavenPom出版物?,gradle,Gradle,我正在开发一个插件。此插件附加到一个项目,该项目既不应用java插件,也不应用java库插件,但在功能上应该“看起来”像一个java项目[1]。这意味着它应该发布包含依赖项的POM。确切的依赖项是已知的,并已在配置中收集 但是,我不知道如何手动将依赖项附加到MavenPublication,以便将其添加到已发布的pom中(除了直接编辑POMXML之外) 因此,现在我有了MavenPublication,并向其中添加了我的自定义工件。在内部,此MavenPublication包含许多“依赖项”,作
java
插件,也不应用java库
插件,但在功能上应该“看起来”像一个java项目[1]。这意味着它应该发布包含依赖项的POM。确切的依赖项是已知的,并已在配置中收集
但是,我不知道如何手动将依赖项附加到MavenPublication,以便将其添加到已发布的pom中(除了直接编辑POMXML之外)
因此,现在我有了MavenPublication
,并向其中添加了我的自定义工件。在内部,此MavenPublication
包含许多“依赖项”,作为MavenDependency
的实例。例如,DefaultMavenPublication#运行时相关性
,DefaultMavenPublication#apiDependencies
。。。但这些都是仅在内部合同中定义的东西
仅使用公共API,如何添加依赖项以添加到pom
作为奖励,回答上的问题并在那里获得积分!:D
另外,这些依赖关系来自多项目构建中的另一个项目(hibernate core)。用户已自行配置了这些依赖项。我只是通过一系列“依赖替换”来“消费”这些依赖项。“源项目”定义了一些对其依赖项的排除。我如何访问这些排除项?我是否能够将它们转移到我正在为此复制项目(hibernate core jakarta)创建的依赖项
谢谢
[1] 这是一个很长的背景故事,但要点是该插件集成了JakartaTransformer。该项目完全使用变压器生成。这两个插件添加的任务会导致问题。类具有pom
属性-您需要构造(或在插件中为此提供一些API)具有所有必要依赖关系的pom。它将与工件一起发布。据我所知,依赖项是通过评估a:(源:)的配置附加到POM的
其想法是提供一个定制的软件组件。这只能通过自定义插件实现,根据。是的,pom允许访问XML。是的,我可以通过编辑XML手动添加依赖项。正如我在问题中提到的,我宁愿避免手动编辑XML,因为我认为显而易见的原因,通过我的插件公开pom不是我要问的。正如我提到的,我已经知道依赖项,并将它们作为配置。我只需要将配置内容放入xml,这正是我所担心的。创建一种新的软件组件充其量也不是一件小事。
MavenPublication shadowMavenPublication = publishingExtension.getPublications().create( "mavenShadowArtifacts", MavenPublication.class );
// `shadowPublishArtifact` is a class defined in the plugin
shadowMavenPublication.artifact(
shadowPublishArtifact.getFile(),
(mavenArtifact) -> {
mavenArtifact.setClassifier( shadowPublishArtifact.getClassifier() );
mavenArtifact.setExtension( shadowPublishArtifact.getExtension() );
}
);