java - para - IntelliJ gradle añadir la dependencia del módulo
groovy sdk intellij (3)
Utilizando IntelliJ 2016.2.
Utilizando Gradle 2.14.1
Tengo 2 proyectos, cada uno con sus propios archivos build.gradle y estructuras de directorios independientes:
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/...
Con suerte, te haces una idea. Dentro de IntelliJ, tengo la siguiente estructura de módulo, al mismo nivel (sin subproyectos):
- myLib
- sandbox
Solicitud simple ... Quiero usar myLib
dentro de la aplicación de sandbox
. Quiero que ambos módulos estén en el mismo proyecto para poder desarrollar ambos.
He intentado agregar una dependencia de módulo a sandbox
para myLib
dentro de IntelliJ. No dados. He intentado agregar una referencia de jarra, no dados.
Creo que necesito agregar una dependencia en el archivo build.gradle pero no puedo entender cómo. He intentado compile files ''<path to myLib.jar>''
, etc. Sin dados.
Módulos locales
Este es un patrón seguido por la mayoría de los proyectos de Gradle donde hay una biblioteca, luego una aplicación de ejemplo que usa esa biblioteca
- module/
- build.gradle
- src/main/java
- library/
- build.gradle
- src/main/java
- settings.gradle
- build.gradle
En esa settings.gradle
nivel superior.
include '':library'', '':module''
Y en el module/build.gradle
, compilas ese proyecto incluido
dependencies {
compile project('':library'')
}
Básicamente, el build.gradle
nivel build.gradle
es un contenedor para todas las configuraciones comunes de los subproyectos y variables. Por ejemplo, se usa más comúnmente para una sección de repositories { }
para las URL de Maven, por ejemplo. Todos los detalles sobre eso están en Gradle - Construcciones multiproyecto
Módulos Remotos
Lo anterior está bien para trabajar localmente, pero digamos que desea compartir su repositorio con muchos otros desarrolladores sin hacer que descarguen código fuente adicional. Entonces publicarías las otras bibliotecas en un servidor remoto.
Si sus proyectos son públicos en GitHub , use un servicio como jitpack.io . También puede configurar una cuenta en Bintray OSS o Maven Central para que sus bibliotecas estén disponibles como la mayoría de las demás.
Si sus proyectos son privados dentro de su empresa , necesitará algún servidor de tipo Maven, ya sea un servidor web genérico, o Nexus o Artifactory, puede agregarlo con una adición al bloque de repositorios.
repositories {
maven { url "http://some.maven.site/" }
}
Luego agrega las fuentes de compile
o implementation
, como de costumbre.
Finalmente, Gradle 3.1 ha solucionado este problema. Las compilaciones compuestas ahora son compatibles de forma nativa. Más here . En resumen, agregue esta línea a la configuración de sandbox.
includeBuild ''<PATH>/myLib''
Si no puede actualizar Gradle, entonces la única esperanza para usted es publicar el artefacto mylib en el repositorio local de Maven y agregar mavenLocal () a sandbox / build.gradle.
Se explica en el artículo https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-android-studio-2-2/
Básicamente necesitas usar compilaciones compuestas. Así que vea> Ventanas de herramientas> Gradle> Haga clic con el botón derecho en el proyecto usando la biblioteca> Configuración de compilación compuesta> Marque el proyecto de biblioteca del que desea usar la versión local.
Hacer una reconstrucción y luego usar la dependencia local.