java - How can I build a Maven project, as a dependency to the root project, with Gradle? -


i have root project multiple subprojects. initially, we've kept projects separate maven projects i've realized gradle more suitable me use. 1 of subprojects we'd rather not convert gradle project, keep maven project.

so i've tried keep maven project subproject gradle project, building fails because dependencies listed in maven projects pom.xml not included. below experiment

folder/project structure

root (gradle root project) |- api (maven project) |- project (gradle subproject, depends on "api" project) 

root/settings.gradle

rootproject.name = 'root'  def subdirs = rootdir.listfiles(new filefilter() {     public boolean accept(file file) {         if (!file.isdirectory()) {             return false         }         if (file.name == 'buildsrc') {             return false         }         return new file(file, 'build.gradle').isfile()     } });  subdirs.each { file dir ->     include dir.name } 

root/build.gradle

import org.gradle.api.artifacts.*  apply plugin: 'base' // add "clean" task root project.  subprojects {     apply from: rootproject.file('common.gradle') }  task mergedjavadoc(type: javadoc, description: 'creates javadoc projects.') {     title = 'all modules'     destinationdir = new file(project.builddir, 'merged-javadoc')      // note: closures below executed lazily.     source {        subprojects*.sourcesets*.main*.allsource     }     classpath.from {         subprojects*.configurations*.compile*.copyrecursive({ !(it instanceof projectdependency); })*.resolve()     } } 

root/common.gradle

// // file applied every subproject. //  apply plugin: 'java' apply plugin: 'maven'  string mavengroupid = 'com.mycompany.myproject' string mavenversion = '1.0-snapshot'  sourcecompatibility = '1.8' [compilejava, compiletestjava]*.options*.encoding = 'utf-8'  repositories {     mavencentral();     // may define additional repositories, or remove "mavencentral()".     // read more repositories here:     //   http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories }  dependencies {     // adding dependencies here add dependencies each subproject.     testcompile group: 'junit', name: 'junit', version: '4.10' }  string mavenartifactid = name  group = mavengroupid version = mavenversion  task sourcesjar(type: jar, dependson: classes, description: 'creates jar source files.') {     classifier = 'sources'     sourcesets.main.allsource }  artifacts {     archives jar     archives sourcesjar }  configure(install.repositories.maveninstaller) {     pom.project {         groupid = mavengroupid         artifactid = mavenartifactid         version = mavenversion     } }  task createfolders(description: 'creates source folders if not exist.') dolast {     sourcesets*.allsource*.srcdirs*.each { file srcdir ->         if (!srcdir.isdirectory()) {             println "creating source folder: ${srcdir}"             srcdir.mkdirs()         }     } } 

root/api/pom.xml

<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelversion>4.0.0</modelversion>     <groupid>com.mycompany.myproject</groupid>     <artifactid>api</artifactid>     <version>1.0-snapshot</version>     <packaging>jar</packaging>     <properties>         <project.build.sourceencoding>utf-8</project.build.sourceencoding>         <maven.compiler.source>1.8</maven.compiler.source>         <maven.compiler.target>1.8</maven.compiler.target>     </properties>      <dependencies>         <!-- https://mvnrepository.com/artifact/de.dev-eth0.dummycreator/dummy-creator -->         <dependency>             <groupid>de.dev-eth0.dummycreator</groupid>             <artifactid>dummy-creator</artifactid>             <version>1.3</version>         </dependency>     </dependencies> </project> 

root/project/build.gradle

if (!hasproperty('mainclass')) {     ext.mainclass = 'com.mycompany.myproject.helloworld' }  dependencies {     compile project(":api") } 

root/api/src/main/java/com/mycompany/myproject/api/api.java

package com.mycompany.myproject.api;  import org.dummycreator.dummycreator;  public class api {      public static void sayhello() {         system.out.println("hello api!");          dummycreator dc = new dummycreator();         integer integer = dc.create(integer.class);          system.out.println("integer: " + integer);     } } 

when building "project", following output:

executing: gradle build arguments: [-c, c:\users\birger\desktop\test\root\settings.gradle]  c:\users\birger\desktop\test\root\api\src\main\java\com\mycompany\myproject\api\api.java:3: error: package org.dummycreator not exist import org.dummycreator.dummycreator;                        ^ c:\users\birger\desktop\test\root\api\src\main\java\com\mycompany\myproject\api\api.java:10: error: cannot find symbol         dummycreator dc = new dummycreator();         ^   symbol:   class dummycreator   location: class api c:\users\birger\desktop\test\root\api\src\main\java\com\mycompany\myproject\api\api.java:10: error: cannot find symbol         dummycreator dc = new dummycreator();                               ^   symbol:   class dummycreator   location: class api 3 errors :api:compilejava failed  failure: build failed exception.  * went wrong: execution failed task ':api:compilejava'. > compilation failed; see compiler error output details.  * try: run --stacktrace option stack trace. run --info or --debug option more log output.  build failed  total time: 0.106 secs    build failure (see notifications window stacktrace): gradle build 

so, what's easiest way make maven subproject "build normal", subproject of gradle root project, without having convert gradle project?

if called mvn install on maven project, use

repositories {      mavenlocal() } 

in gradle project depend on jar via group/artifact/version. gradle's maven dependency integration of transitive dependencies pom


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -