Предоставление зависимости с помощью сборки gradle - PullRequest
1 голос
/ 02 апреля 2019

В моем продукте используется сторонняя зависимость, называемая matlab control version 4.1.0.Этот jar-файл позволяет java отправлять команду в matlab.

То, как мы ее используем, - это вызов java-команды в matlab (запускаемой пользователем), после чего выполняется куча вычислений в плагине java, затем javaотправляет уведомление в Matlab, который затем начинает выполнение m кода с данными, полученными из Java.

Пока что файл JAR хранится в нашем хранилище и напрямую загружается в Matlab.

Мы хотимперейти на matlab-control v5.0.0, который находится на maven.Поэтому мы подумали, что это был повод избавиться от файла jar, включить его в качестве зависимости от maven в нашу сборку gradle.

Однако API, похоже, не виден для Matlab, который возвращает исключение «можетnot find class org.n52.matlabcontrol.MatlabProxy '.

Если я проверю соединение напрямую из java (путем создания java-теста), java сама запустит matlab и запросит выполнение команды (например,Привет, команда мира)Он работает нормально, и я могу создать экземпляр MatlabProxy.Но если я запускаю Matlab и пытаюсь получить доступ к MatlabProxy непосредственно из него, он не может его найти.

Так что, похоже, API управления Matlab не предоставляется моей сборкой gradle.До сих пор я пробовал следующее:

apply plugin: 'java-library'

dependencies {
    implementation('org.n52.matlab:matlab-control:5.0.0')
    api('org.n52.matlab:matlab-control:5.0.0')
}

Но это не работает, так чего мне не хватает?

1 Ответ

0 голосов
/ 02 апреля 2019

Благодаря JB Nizet, который направил меня в правильном направлении, я нашел решение.Мне просто нужно было сначала создать конфигурацию, а затем назначить зависимости для этой конфигурации, чтобы скопировать их:

configurations {
    deployerJars
}

dependencies {
    deployerJars group: 'org.n52.matlab', name: 'matlab-control', version: '5.0.0'
}

task copyToLib(type: Copy) {
    into "$buildDir/libs"
    from configurations.deployerJars
}
...