2015-09-18 3 views
1

Я хочу установить подмодули моего проекта в качестве jar в локальный репозиторий maven. Я искал сценарий градиента для публикации. Я нашел. Но он устанавливает только одну банку и не имеет классов подмодулей. Как я могу продолжить?Как установить или опубликовать подмодули проекта градиента как банку

   my-project 
       | 
       |__subprj1 
       | |__src 
       |  |__ com 
       |  |__Abc.java 
       | 
       | |__pom.xml 
       |__subprj2 
       | | 
       | |__pom.xml 
       | 
       |__ build.gradle 
       |__ publish.gradle 

build.gradle:

apply plugin: "java" 
     apply from : 'publish.gradle' 

     ext { 
      GROUPID = "my-project" 
      VERSION = "1.0.0" 
      robovmVersion = "1.5.0" 
      androidVersion = "4.4" 
      gwtVersion = "2.6.0" 
      jglfwVersion = "1.1" 
      lwjglVersion = "2.9.2" 
      jlayerVersion = "1.0.1-gdx" 
      jorbisVersion = "0.0.17" 
      junitVersion = "4.11" 
     } 

     buildscript { 
      repositories { mavenCentral() } 
      dependencies { 
       classpath "com.android.tools.build:gradle:1.2.3" 
       classpath "org.robovm:robovm-gradle-plugin:1.5.0" 
      } 
     } 

     configure(allprojects - project('...'')) { 
      apply plugin: "eclipse" 
      apply plugin: "idea" 
      apply plugin: "java" 

      compileJava.options.encoding = 'UTF-8'; 

      repositories { 
       mavenCentral() 
       maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
      } 

      group = GROUPID 
      version = VERSION 

      // set source Java version 
      sourceCompatibility = 1.6 
      targetCompatibility = 1.6 
      sourceSets.main.java.srcDirs = ["src"] 
      sourceSets.main.resources.srcDirs = ["src"] 

      // create a custom configuration for local dependencies such as Android runtime 
      configurations { 
       optional 
       compile.extendsFrom optional 
      } 
     } 

     project("...) { 

     } 


     if (JavaVersion.current().isJava8Compatible()) { 
      allprojects { 
       tasks.withType(Javadoc) { 
        options.addStringOption("Xdoclint:none", "-quiet") 
       } 
      } 
     } 

     task fetchNatives << { 
      ant.importBuild "fetch.xml" 
      fetch.execute() 
      copy.execute() 
     } 

publish.gradle:

apply plugin: 'maven' 
    apply plugin: 'signing' 

    group = 'my-project' 
    version = '1.0.0' 
    ext.packaging = 'jar' 

    def isDevBuild 
    def isCiBuild 
    def isReleaseBuild 

    def sonatypeRepositoryUrl 

    //set build variables based on build type (release, continuous integration, development) 
    if(hasProperty("release")) { 
     ... 
    } else if (hasProperty("snapshot")) { 
     ... 
    } else { 
     isDevBuild = true 
     println "Performing local build" 
    } 

    repositories { 
     mavenCentral() 
    } 

    task artifactDocs(type: Jar, dependsOn: javadoc) { 
     classifier = 'javadoc' 
     from 'build/docs/javadoc' 
    } 

    task artifactSources(type: Jar) { 
     from sourceSets.main.allSource 
     classifier = 'sources' 
    } 

    artifacts { 
     archives jar 
     archives artifactDocs 
     archives artifactSources 
    } 

    if(isReleaseBuild) { 
     signing { 
      sign configurations.archives 
     } 
    } else { 
     task signArchives { 
      // do nothing 
     } 
    } 

    uploadArchives { 
     repositories { 
      if (isDevBuild) { 
       mavenLocal() 
      } 
     } 
    } 
+0

Может быть попытаться сделать ваши subprj1 и subprj2 Gradle-подпроектов для моего проекта, то они оба будут иметь собственные файлы build.gradle и могут быть легко выполнены из скрипта сборки parens – Stanislav

ответ

0

Во-первых, ваши Подмодули должны обрабатываться как Gradle подпроектов. Поэтому вам нужно создать файлы build.gradle для них и включить их в корневой проект через файл settings.gradle.

Во-вторых, в файле build.gradle каждого подпроекта вы можете определить свой код развертывания. Чтобы установить что-то в локальный репозиторий maven ($ HOME/.m2), я использую плагин gradle maven. После настройки правильно, я бегу установить на этом подпроекта:

gradle subproject1:install 

Вот пример конфигурации такого подпроекта, чтобы установить его на месте:

apply plugin: 'maven' 
... 
group = 'com.example.subproject2' 

configurations { 
    deployerJars 
} 

dependencies { 
    ... 
    deployerJars "org.apache.maven.wagon:wagon-http:2.2" 
} 
... 
def installer = install.repositories.mavenInstaller 
Смежные вопросы