Обычно, когда я создаю проект с использованием Maven, я разделяю проект приложения на несколько небольших модулей.
Проекты Gradle также имеют более чем один компонент, который мы также называем многопроектными сборками.
Сначала мы создаем многопроектную сборку:
Mkdir cmdgradleproj && CD cmdgradleProjgradle init
В это время
D: /cmdgradleproj> выполнять в каталоге: tree /f
Структура проекта заключается в следующем:
│ build.gradle│ gradlew│ gradlew.bat│ settings.gradle│ ├─.gradle│ └─3.0│ └─taskArtifacts│ cache.properties│ cache.properties.lock│ fileHashes.bin│ fileSnapshots.bin│ fileSnapshots.bin│ fileSnapshotsToTreeSnapshotsIndex.bin│ taskArtifacts.bin│ └acradle └acrapper Gradle-Wrapper.jar Gradle-Wrapper.properties
Затем создайте несколько модулей. Здесь возьмите основные и веб -модули в качестве примеров и сначала создайте четыре каталога (тестовые папки используются для написания классов тестирования):
Mkdir core/src/main/javamkdir core/src/main/testmkdir web/src/main/javamkdir web/src/main/resources
Основной модуль: содержит некоторые общие компоненты, которые могут использоваться другими модулями программы. В примере есть только один класс: класс сообщений Service возвращает «Hello World!» нить. Этот модуль имеет две зависимости: Junit 4.11 и Commons-Lang3.
Веб -модуль: модуль содержит класс Helloworld, который является началом программы. Он получает информацию из объекта MessageService и записывает полученную информацию в файл журнала. Модуль имеет две зависимости: ему требуется модуль Core, а также использует log4j в качестве журнала.
Теперь, когда мы создали требуемый каталог, следующим шагом является настройка сборки Gradle, сначала настройка проектов, включенных в Multi-Project Build.
Мы можем настроить проекты, включенные в многопроектные сборки, через следующие шаги:
1. Создание файла настройки. Многопроектная сборка Gradle должна содержать этот файл, поскольку он указывает на те проекты, включенные в сборку мультипроекта.
2. Убедитесь, что веб-проекты и основные проекты включены в наши многопроектные сборки.
Наш настройки.
Включите 'Core'
Включите «Интернет»
Аббревиатура: включите «ядро», «Интернет»
Измените Build.Gradle в корневом каталоге:
// Общая конфигурация всех субпроектов субпроектов {Применить плагин: 'java' // Применить плагин: 'eclipse' Применить плагин: «идея» версия = '1,0' // jvm Номер версии требует ourcecopatibility = 1,8 TargetCompatibility = 1.8 // Когда Java составлен, он не будет снят из -за неверно [compiletjav, compitejav, compilejav, compilejav, compilejav, Compiletehaav, CompileJav, Compilejav, Compilestesjav. Javadoc]*. Опции*.encoding = 'UTF-8' // определить номер версии ext {springVersion = '4.3.3.reelease' hibernateversion = '5.2.2.final'} Репозитории {mavencentral ()} jar {manifest {атрибуты («Реализация title»: Определено здесь все*. "org.springframework: Spring-Orm: $ SpringVersion", "org.springframework: Spring-TX: $ SpringVersion", "org.springframework.data:spring-data-jpa :1.10.3.reeleas "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: jackson-databind: 2.3.2", "com.fasterxml.chor. JAR, которая не существует в Maven Ext.Jartree = fileTree (dir: 'libs', включает: '**/*. jar') ext.rootprojectlibs = new File (rootproject.rootdir, 'libs'). getabsolutepath () ext.jartree += filetre TestCompile Degy DevingCompile («org.springframework: Spring-test: $ SpringVersion», «Junit: Junit: 4.12»)} // Отображение всех банок для компиляции в рамках текущего проекта. Задачи ListJars (Описание: 'Отображение всех банок компиляции.') << {configurations.compile.each {file file -> println file.name}}}Далее вы можете изменить Core/build.gradle для определения зависимостей модуля Core:
// Имя пакета JAR ArchivesseName = 'Core' // Другие конфигурации также могут быть определены. Здесь конфигурация в родительском модуле, непосредственно наследуя конфигурацию веб-модуля, должна зависеть от основного модуля, поэтому веб-/build.gradle определяется следующим образом: Применить плагин: «война» зависимости {// Core-модуль зависимости («Core») Компиляция («org.spramework: spring-webmvc: $ Springvers» "org.apache.taglibs: Taglibs-Standard-Impl: 1.2.1") // Зависимость, обеспечиваемая система, предоставляется DefenseCompile ("javax.servlet: javax.servlet-api: 3.1.0", "javax.servlet.jsp: jsp-api: 2.2.1-b03", " "javax.servlet.jsp.jstl: javax.servlet.jsp.jstl-api: 1.2.1")} Задача jarwithoutresources (type: jar) {basename project.name from ("$ builddir/classe/main")} war {jarwithouresources от ("$ projectdir/src/src/src/src/src/src/src/src/src/src/src/src/src/src/src/src/src/src/sr "*.properties" into ("web-inf/class")} classpath = classpath-sourcesets.main.output classpath filetree (dir: libsdir, include: "$ {project.name}-$ {version} .jar")} task ('jarpath') << {{configurations.runtime.resolve (). it.tostring ()+";" } println (); }3. Скомпилируйте проект
Посмотреть все банки:
> Gradle ListJars // Просмотр зависимости каждого модуля:> Gradle: Core: Devestinendions> Gradle: Web: Deperiation // Скомпилируйте все модули:> Gradle Build
Сравните каталог в это время следующим образом:
│ build.gradle│ gradlew│ gradlew.bat│ settings.gradle│ ├ack ─ └ └-- onabe. TaskArtifacts.bin│ ├íмобильный │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ └ └ │ │ │ │ │ │ │ │ │ └ └ которым └ackingt └ack└ ─ Java│ └acреды ─ java│ └acредя └ └ ™ Как Java│ └ └ └ └acред ─ ─ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ ─ ─ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ java│ └acредуррес. └acke in -in ├acka ona Java └acke
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.