一个 maven 多模块项目如何包含 gradle 子项目



我们有一个 maven 多模块项目,我们希望逐渐迁移到 gradle 项目。

对于初学者来说,我只想将几个子项目迁移到gradle,但将它们作为子项目保留到父maven-project构建中。

是否有支持/推荐的方法?

指向插件的指针,或任何如何最好地做到这一点的建议表示赞赏。

不太确定,对于这样的任务有一个简单的解决方案。但是你可以看看gradle-maven-plugin,它允许在Maven中运行Gradle任务。从插件描述:

要使用插件,只需声明插件并将其绑定到 maven 您选择的生命周期阶段:

<plugin>
    <groupId>org.fortasoft</groupId>
    <artifactId>gradle-maven-plugin</artifactId>
    <version>1.0.8</version>
    <configuration>
        <tasks>
            <!-- this would effectively call "gradle doSomething" -->
            <task>doSomething</task>
        </tasks>
    </configuration>
    <executions>
        <execution>
            <!-- You can bind this to any phase you like -->
            <phase>compile</phase>
            <goals>
                <!-- goal must be "invoke" -->
                <goal>invoke</goal>
            </goals>
        </execution>
    </executions>
</plugin>

现在,当您运行 maven 时,gradle 将被调用并执行 build.gradle 中定义的"doSomething"任务。

显然,您可以更改任务以满足您的需求。

在此示例中,gradle 调用将在 maven 期间发生 "编译"阶段,但这可以通过更改 元素值。

不幸的是,不能说,如何在不将其发布到某个本地存储库的情况下共享 Gradle 模块工件。

为了将构建的工件安装到本地 maven 存储库中,只需将 gradle 的 maven 插件添加到您的 build.gradle 文件中即可。然后,使用 install 任务,而不是@Stanislav的 pom.xml示例中的doSomething

将其添加到您尝试构建的 gradle 项目中,

uploadArchives {
        repositories {
            mavenLocal()
        }
    }

然后调用gradle build publishToMavenLocal这将构建项目/模块并将其推送到本地 maven 存储库 (.m2( 以及生成的 pom 文件。然后,您可以将其用作带有pom文件的先前普通maven模块。

阅读 https://proandroiddev.com/tip-work-with-third-party-projects-locally-with-gradle-961d6c9efb02 以了解更多信息。

最新更新