Учитывая следующую структуру проекта:
parent/
settings.gradle
app/
src/main/java/...
build.gradle
model/
src-gen/main/java/...
Example.java
impl/
ExampleImpl.java
build.gradle
В model/build.gradle
Я объявляю необходимые пакеты EMF как api
зависимости, предполагая, что они будут доступны пользователю этого проекта:
dependencies {
api 'org.eclipse.emf:common:2.3.0-v200706262000'
api 'org.eclipse.emf:ecore:2.3.0-v200706262000'
api 'org.eclipse.emf:ecore-xmi:2.2.3'
}
sourceSets { main { java {
srcDirs 'src-gen'
} } }
В app/build.gradle
я объявляю :model
как зависимость:
plugins {
id 'java'
id 'application'
}
dependencies {
implementation project(':model')
...
Однако, когда я запускаю gradle run
, я получаю следующее исключение (наряду с ~ 100 связанными) :
> Task :model:compileJava FAILED
/.../parent/model/src-gen/main/java/org/example/parent/model/impl/ExampleImpl.java:10: error: cannot find symbol
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
^
symbol: class MinimalEObjectImpl
location: package org.eclipse.emf.ecore.impl
Почему это так и что я могу с этим сделать? Я хочу создать модель данных на основе EMF (:model
) и использовать ее в другом подпроекте (:app
). Я хочу избежать зависимостей от Eclipse.