Настройка проекта в IntelliJ IDEA для трех модулей Java, один из которых используется как модуль для двух других - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь настроить многомодульный Java-проект на основе Gradle в IntelliJ IDEA:

Три модуля (я полагаю), один из которых подразумевается как библиотека, используемая двумя другими модулями.Мне не удается правильно настроить конфигурацию проекта, может быть, кто-то может дать мне подсказку:

В зависимости от того, как я ссылаюсь на модуль библиотеки из других модулей, мне удается получить подсветку синтаксиса для поиска ссылочных (импортированных) классов, но это не работает для компилятора, который все еще жалуется на классы не найдены.Поэтому я предполагаю, что мой вопрос таков: как правильно ссылаться на классы в модуле библиотеки из двух других модулей в настройке структуры проекта?

Это настройка:

/..../pow/library
         /spring
         /droid

setup.gradle:

rootProject.name = 'pow'

include 'library'
include 'spring'
include 'droid'

build.gradle:

group 'org.rustygnome.pow'
version '1.0-SNAPSHOT'

allprojects {
    group 'org.rustygnome.pow'
    version '1.0-SNAPSHOT'
}

repositories {
    mavenCentral()
}

dependencies {
}

library/build.gradle:

apply plugin: 'java'

//sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.json:json:20171018'
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    compile files('/home/arkascha/Projects/Android/Sdk/platforms/android-26/android.jar')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

spring/build.gradle:

buildscript {
    ext {
        springBootVersion = '2.0.1.BUILD-SNAPSHOT'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

bootJar {
    mainClassName = 'org.rustygnome.pow.spring.Application'
    baseName = 'pow-spring-boot'
    version =  '0.1.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    runtime('org.springframework.boot:spring-boot-devtools')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

Используя эту настройку, я хочу собрать модуль spring.В источниках этих модулей я ссылаюсь на класс из модуля library:

Application.java:

package org.rustygnome.pow.spring;

import org.rustygnome.pow.lib.config.Config;
// other imports

@SpringBootApplication
public class Application implements ApplicationRunner {

    static ApplicationContext appContext;
    static ThreadPoolTaskExecutor taskExecutor;

    Config config; // this one references 
// further stuff

Модуль library собран, проблем нет.

Но когда я пытаюсь построить spring module, я получаю:

11: 14: 38 AM: Выполнение задачи 'build' ...

/data / Projects / pow / spring / src / main / java / org / rustygnome / pow / spring / Application.java: 3:

ошибка: пакет org.rustygnome.pow.lib.config не существует

import org.rustygnome.pow.lib.config.Config;

// ... другие вопросы ...

1 Ответ

0 голосов
/ 09 июня 2018

Композитные сборки , похоже, то, что вам нужно.

Ссылка на Gradle для функции составных сборок .

Вы также можете использовать Multi-проекты .

...