it-swarm.com.de

IntelliJ gradle add Modulabhängigkeit

Verwenden von IntelliJ 2016.2.
Verwenden von Gradle 2.14.1

Ich habe 2 Projekte mit jeweils eigenen build.gradle-Dateien und separaten Verzeichnisstrukturen:

myLib (meant to be jarred and used by others)
  - build.gradle
  - settings.gradle
  - src/main/Java/...

sandbox (spring boot web app)
  - build.gradle
  - settings.gradle
  - src/main/Java/...
  - src/main/resources/...

Hoffentlich bekommst du das Bild. In IntelliJ habe ich die folgende Modulstruktur auf derselben Ebene (keine Unterprojekte):

- myLib
- sandbox

Einfache Anfrage ... Ich möchte myLib in der sandbox-App verwenden. Ich möchte beide Module in einem Projekt haben, um beide zu entwickeln.

Ich habe versucht, eine Modulabhängigkeit zu sandbox für myLib in IntelliJ hinzuzufügen. Kein Würfel. Ich habe versucht, eine Glasreferenz hinzuzufügen, keine Würfel.

Ich glaube, ich muss eine Abhängigkeit in der build.gradle-Datei hinzufügen, kann aber nicht herausfinden, wie. Ich habe compile files '<path to myLib.jar>' usw. ausprobiert. Keine Würfel.

20
emiles

Lokale Module

Dies ist ein Muster, das von den meisten Gradle-Projekten gefolgt wird, in denen eine Bibliothek vorhanden ist, und dann eine Beispielanwendung, die diese Bibliothek verwendet

 - module/
    - build.gradle
    - src/main/Java
 - library/
    - build.gradle
    - src/main/Java
 - settings.gradle
 - build.gradle

In diesem Top-Level settings.gradle haben Sie 

include ':library', ':module'

Und in module/build.gradle kompilieren Sie das enthaltene Projekt

dependencies {
    compile project(':library')
}

Grundsätzlich ist build.gradle auf oberster Ebene ein Wrapper für alle gängigen Konfigurationen der Unterprojekte und Variablen. Es wird beispielsweise am häufigsten für einen repositories { }-Abschnitt für Maven-URLs verwendet. Ausführliche Informationen dazu finden Sie unter Gradle - Multiprojekt-Builds

Entfernt Module

Das oben genannte ist für lokales Arbeiten in Ordnung, aber Sie möchten Ihr Repo mit vielen anderen Entwicklern teilen, ohne dass zusätzlicher Quellcode heruntergeladen werden muss. Dann würden Sie die anderen Bibliotheken auf einem Remote-Server veröffentlichen. 

Wenn Ihre Projekte public auf GitHub sind, verwenden Sie einen Dienst wie jitpack.io . Sie können auch ein Konto bei Bintray OSS oder Maven Central einrichten, damit Ihre Bibliotheken wie die meisten anderen zur Verfügung stehen. 

Wenn Ihre Projekte privat in Ihrem Unternehmen sind, benötigen Sie einen Server vom Typ Maven, unabhängig davon, ob es sich um einen generischen Webserver handelt, oder um Nexus oder Artifactory. Sie können dies mit einem Zusatz zum Repository-Block hinzufügen.

repositories {
    maven { url "http://some.maven.site/" }
}

Fügen Sie dann wie üblich die Quellen compile oder implementation hinzu

38
cricket_007

Schließlich hat Gradle 3.1 dieses Problem gelöst. Zusammengesetzte Builds werden jetzt nativ unterstützt. Mehr hier . Fügen Sie diese Zeile kurz zu sandbox settings.gradle file- hinzu.

includeBuild '<PATH>/myLib'

Wenn Sie Gradle nicht aktualisieren können, besteht die einzige Hoffnung für Sie darin, Mylib-Artefakte im lokalen Maven-Repo zu veröffentlichen und mavenLocal () zu Sandbox/build.gradle hinzuzufügen.

4
darwinbaisa

Sein Artikel wurde im Artikel https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-Android-studio-2-2/

Grundsätzlich müssen Sie Composite Builds verwenden. So Ansicht> Tool-Fenster> Grading> Klicken Sie mit der Bibliothek mit der rechten Maustaste auf das Projekt.> Composite Build-Konfiguration> Markieren Sie das Bibliotheksprojekt, von dem Sie die lokale Version verwenden möchten.

Machen Sie einen Neuaufbau und dann sollte die lokale Abhängigkeit verwendet werden

0
Richard Tingle