2015-01-03 4 views
7

Вот мой dummy проекта build.gradle файл:Publishing Gradle снимки локально

apply plugin: 'groovy' 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

dependencies { 
    compile 'org.codehaus.groovy:groovy-all:2.3.3' 
    compile 'org.slf4j:jcl-over-slf4j:1.7.7' 

    testCompile 'junit:junit:4.11' 
    testCompile 'org.mockito:mockito-all:1.10.8' 
} 

task sourcesJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

artifacts { 
    archives sourcesJar 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '1.11' 
} 

Когда я бегу gradle clean build -Pversion=1.2.3, это упаковывает весь мой код и создает build/libs/dummy-1.2.3.jar для меня.

Я хотел бы знать абсолютную голого минимума количества Gradle коды, необходимой, чтобы я мог опубликовать свой «фиктивный» JARs в моем локальном кэш Maven (mavenLocal()). Кроме того, как это работает с версиями? I может всегда указывать конкретную версию для манекена JAR, но когда я публикую локально, имеет смысл (по крайней мере, мне) публиковать версии SNAPSHOT. I может просто запустить gradle clean build -Pversion=0.1.SNAPSHOT, но тогда моя забота о том, будут ли другие местные проекты подбирать последние версии SNAPSHOT.

Итак, еще раз:

  1. Что голый минимальный код, чтобы опубликовать dummy локально?
  2. В любом случае, при публикации на местном уровне, указать версию SNAPSHOT, что другие проекты всегда подбирают последнюю копию?
  3. Что могли бы использовать другие местные проекты, чтобы забрать этот SNAPSHOT? Что-то вроде compile ':dummy:LATEST'?
+1

На вопрос, на который вы ответили? Если да, то ответьте пожалуйста. – Opal

ответ

1

1) Вам просто нужно сделать

gradle install 

2) Укажите любой вариант вам нравится - версия СНАПШОТ имеет смысл для активного развития. Как только вы думаете, что ваша библиотека с меньшей вероятностью изменится, вам обязательно нужно перейти к версии без моментального снимка.

3) Вы должны указать зависимость от версии, имеющейся в вашем локальном репо, как и для сторонних библиотек.

+1

Какой плагин необходим для выполнения этого? Я получаю это при попытке: '' ' Задача 'install' не найдена в корневом проекте 'kotti'. '' ' – Adeynack

7

Here Я подготовил образец проекта для вас, это голый минимум, когда дело доходит до конфигурации build.gradle.

  1. Вам нужно добавить apply plugin: 'maven' и установить group = 'somegroup'. maven плагин дает install задание и group требуется для установки артефакта в репозитории maven.

    Затем запустить gradle clean install. Если версия не прошла, она будет оцениваться до неуказанной, если нет artifactId, она будет оцениваться как project.name. Here Вы можете найти, как настроить другие свойства maven.

    Установка моментального снимка для локального развития - определенно хорошая идея.

  2. Если вы хотите, чтобы другой проект всегда выбирал самую последнюю версию SNAPSHOT, вам необходимо добавить следующий фрагмент кода в скрипты build.gradle. Он гарантирует разрешение последней версии.

    configurations.all { 
        resolutionStrategy { 
        cacheChangingModulesFor 0, 'seconds' 
        } 
    } 
    
  3. Прежде всего Вам нужно добавить снимок репо в repositories блока (только образец) - с местным Maven репо, этот шаг не нужен:

    maven { 
        url 'https://oss.sonatype.org/content/repositories/snapshots' 
    } 
    

    Dependency должен быть определен как:

    group:artifact:0.+ 
    

Не стесняйтесь спрашивать в случае каких-либо вопросов.