Используйте нестандартное местоположение репозитория Maven для сборки Gradle - PullRequest
0 голосов
/ 05 июля 2018

Для автоматизации сборки мы используем нестандартное расположение репозитория Maven, которое определяется в файле настроек следующим образом:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>/some/place/repository</localRepository>
     ... other stuff
</settings>

Maven вызывается как mvn --settings settings.xml.

Теперь у нас есть один дополнительный проект, который использует gradle. Как мне лучше убедить gradle использовать одно и то же нестандартное хранилище для проверки пакетов, от которых он зависит, и публикации своих артефактов, от которых могут зависеть другие (maven) проекты?

Файл build.gradle в настоящее время выглядит следующим образом:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'maven-publish'

group = 'com.example'
version = '1.3.4'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    ....
}

task uberJar(type: Jar) {
    description = 'Make JAR with all the dependencies included'
    classifier = 'uber'
    dependsOn configurations.runtime
    from sourceSets.main.output
    from { configurations.runtime.collect { it.directory ? it : zipTree(it) } }
}

task sourceJar(type: Jar) {
    description = 'Make JAR of all the source files'
    classifier = 'sources'
    from sourceSets.main.allSource
}

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
            artifact sourceJar
            artifact jar
        }
    }
}

Я попытался добавить это в описание в https://docs.gradle.org/current/userguide/publishing_maven.html

publishing {
    repositories {
        maven {
            url "/some/place/repository"
        }
    }
} 

но gradle все еще помещает вещи в ~/.m2/repository. Как мне сделать эту работу?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Я думаю, вам нужно поместить объявление repositories и publications в один и тот же блок publishing, например:

publishing {
  repositories {
    maven {
      url file('/some/place/repository')
    }
  }
  publications {
    maven(MavenPublication) {
      from components.java
      artifact sourceJar
      artifact jar
    }
  }
}

Дополнительно добавьте фрагмент из ответа @ lance-java, чтобы сделать артефакты в пользовательском репо доступными для других проектов:

repositories {
  mavenLocal()
  mavenCentral()
  maven {
    url file('/some/place/repository')
  }
}
0 голосов
/ 05 июля 2018
repositories {
    maven {
        url file('/some/place/repository')
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...