Por lo general, cuando construyo un proyecto usando Maven, divido el proyecto de aplicación en múltiples módulos más pequeños.
Los proyectos de Gradle también tienen más de un componente, que también llamamos compilaciones de proyectos múltiples.
Primero creamos una compilación de proyectos múltiples:
mkdir cmdgradleproj && cd cmdgradleprojgradle init
En este momento
D: /cmdgradleproj> ejecutar en el directorio: tree /f
La estructura del proyecto es la siguiente:
│ build.gradle│ gradlew│ gradlew.bat│ settings.gradle│ ├─.gradle│ └─3.0│ └─TaskArtifacts│ cache.properties│ cache.properties.lock│ filehashes.bin│ filessnapshots.bin│ filesnapshots.bin│ filesnapshotstotreesnapshots│bin│bin│bins. TaskArtifacts.bin│ └─gradle └─ Wrapper Gradle-Wrapper.Jar Gradle-Wrapper.Properties
Luego, cree múltiples módulos. Aquí, tome módulos básicos y web como ejemplos, y primero cree cuatro directorios (las carpetas de prueba se utilizan para escribir clases de prueba):
mkdir core/src/main/javamkdir core/src/main/testmkdir web/src/main/javamkdir web/src/main/recursos
Módulo de núcleo: contiene algunos componentes comunes que pueden ser utilizados por otros módulos del programa. En el ejemplo, solo hay una clase: la clase MessageService devuelve el "¡Hola mundo!" cadena. Este módulo tiene dos dependencias: Junit 4.11 y Commons-Lang3.
Módulo web: el módulo contiene la clase Helloworld, que es el comienzo del programa. Obtiene información del objeto MessageService y escribe la información recibida en un archivo de registro. El módulo tiene dos dependencias: requiere el módulo central y también usa log4j como log.
Ahora que hemos creado el directorio requerido, el siguiente paso es configurar la compilación de Gradle, primero configurando los proyectos incluidos en la compilación de proyectos múltiples.
Podemos configurar proyectos incluidos en las compilaciones de proyectos múltiples a través de los siguientes pasos:
1. Cree el archivo Settings.gradle en el directorio raíz del proyecto raíz. Una compilación de gradle de varios proyectos debe contener este archivo porque indica aquellos proyectos incluidos en la compilación de proyectos múltiples.
2. Asegúrese de que se incluyan proyectos web y principales en nuestras compilaciones de proyectos múltiples.
Nuestro archivo settings.gradle es el siguiente:
incluir 'núcleo'
incluir 'web'
Abreviatura: incluya 'Core', 'Web'
Modificar build.gradle en el directorio raíz:
// Configuración general de todos los subprojects subprojects {Aplicar complemento: 'java' // aplicar complemento: 'eclipse' aplicar complemento: 'idea' version 'version =' 1.0 '// jvm versión del número javadoc]*. Opciones*.Encoding = 'utf-8' // Define el número de versión ext {springversion = '4.3.3.Release' Hibernateversion = '5.2.2.final'} repositorios {mavencentral ()} jar {manifest {atributas ("implementation-title": "gradle")}}} configuraciones { definido aquí todo*.exclude Group: 'Commons-httpclient' all*.exclude Group: 'Commons-logging' all*.exclude group: 'commons-beanutils', módulo: 'commons-beanutils'} dependencias {// compile de dependencia general ("ORG.SpringFrameWork: treing-coNtext: $ springversion",,,,,,,, "org.springframework: spring-anm: $ springversion", "org.springframework: spring-tx: $ springversion", "org.springframework.data:spring-data-jPa:1.10.3.release", "org.hibernate: hibernato-conditymanager: $ hibernateversion", ",", ",,", ",", ",", ",", ", "C3P0: C3P0: 0.9.1.2", "MySQL: MySQL-Connector-Java: 6.0.4", "org.slf4j: slf4j-nop: 1.7.21", "Commons-FileUpload: commons-FileUpload: 1.3.2", "com.fasterxml.jackson.core. ) // depende del jar que no exista en Maven ext.JARTree = fileTree (dir: 'libs', incluya: '**/*. Jar') ext.rootprojectlibs = new file (rootproject.rootdir, 'libs'). GetAbSolutePath () ext.JARTREE += filetre Jartree // Test Dependency TestCompile ("org.springframework: spring-test: $ springversion", "Junit: junit: 4.12")} // Muestra todos los frascos para compilar bajo el proyecto actual. Task Listjars (Descripción: 'Mostrar todos los frascos de compilación.') << {configurations.compile.each {archivo de archivo -> println file.name}}}A continuación, puede modificar Core/Build.gradle para definir las dependencias del módulo Core:
// El nombre del paquete JAR ArchivesBaseName = 'Core' // también se pueden definir otras configuraciones. Aquí, la configuración en el módulo principal hereda directamente la configuración del módulo web debe depender del módulo central, por lo que el Web/Build.gradle se define de la siguiente manera: Aplicar el complemento: "War" Dependencias {// Proyecto de compilación de módulo de dependencia de dependencia (": Core") ("Org.springFrameFrameWork: Spring-Webmvc: $ Springversion",,,,,,,,,,, Core ") compil "org.apache.taglibs: taglibs-standard-simppl: 1.2.1") // La dependencia proporcionada por el sistema proporciona provisto ("javax.servlet: javax.servlet-api: 3.1.0", "javax.servlet.jsp: jsp-opi: 2.2.1-b03", y "javax.servlet.jsp.jstl: javax.servlet.jsp.jstl-api: 1.2.1")} tarea jarwithoUtreSources (type: jar) {basename proyecto.name de ("$ builddir/classes/main")} war {dependsson jarwithoUtresources de ("$ ProjectDir/SRC/recursos "*.properties" en ("webinf/classes")} classpath = classpath-SourcesSets.Main.output classpath filetree (dir: libsdir, incluir: "$ {proyect.name}-$ {versión} .jar")} tarea ('jarpath') << {configurations.runtime.resolve (). It.ToString ()+";" } println (); }3. Compilar el proyecto
Ver todos los frascos:
> Gradle Listjars // Ver las dependencias de cada módulo:> Gradle: Core: Dependencias> Gradle: Web: Dependencias // Compilar todos los módulos:> Gradle Build
Compare el directorio en este momento como sigue:
│ build.gradle│ gradlew│ gradlew.bat│ settings.gradle│ ├──. taskArtifacts.bin│ ├───core│ │ build.gradle│ │ │ ├───build│ │ ├───libs│ │ │ core-1.0.jar│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ └ └ └ └ └ └ └─ SONTIMENTE TETIS └─── SMAIN ├───Java └──── RESOURES
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.