Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
如何手动将依赖项添加到Gradle';s MavenPom/MavenPom出版物?_Gradle - Fatal编程技术网

如何手动将依赖项添加到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() );
        }
);