Модуль Maven Imported [ietf-inet-types] не найден
У меня установлен OpenDayLight Boron-SR3 и тестовый файл YANG в /opt/odl_l3vpn/dave/api/src/main/yang.
module DaveTest {
namespace "urn:opendaylight:params:xml:ns:DaveTest";
prefix dm;
import "ietf-inet-types" {
prefix ietf-yang;
}
description "Dave testing file";
revision "2017-04-17" {
description "Initial version.";
}
container testing-vars {
list test-list {
key "vpn-transaction-id";
unique "vpn-transaction-id";
leaf vpn-transaction-id {
type string;
description "Generated for the model.";
}
leaf vpn-id {
type string;
description "VPN ID for the VPN.";
}
}
}
}
Когда я компилирую файл, используя 'mvn clean install -nsu', я получаю сообщение об ошибке:
[ОШИБКА] Не удалось выполнить цель org.opendaylight.yangtools:yang-maven-plugin:1.0.3-Boron-SR3: генерировать-источники (привязка) для проекта dave-api: yang-to-sources: невозможно проанализировать файлы yang from /opt/odl_l3vpn/dave/api/src/main/yang: импортированный модуль [ietf-inet-types] не найден. [в META-INF/yang/DaveTest.yang:6:4]
Полный стек ниже:
[ERROR] Failed to execute goal org.opendaylight.yangtools:yang-maven-plugin:1.0.3-Boron-SR3:generate-sources (binding) on project dave-api: yang-to-sources: Unable to parse yang files from /opt/odl_l3vpn/dave/api/src/main/yang: Imported module [ietf-inet-types] was not found. [at META-INF/yang/DaveTest.yang:6:8] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.opendaylight.yangtools:yang-maven-plugin:1.0.3-Boron-SR3:generate-sources (binding) on project dave-api: yang-to-sources: Unable to parse yang files from /opt/odl_l3vpn/dave/api/src/main/yang
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: yang-to-sources: Unable to parse yang files from /opt/odl_l3vpn/dave/api/src/main/yang
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.processYang(YangToSourcesProcessor.java:222)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.execute(YangToSourcesProcessor.java:95)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.conditionalExecute(YangToSourcesProcessor.java:118)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute(YangToSourcesMojo.java:119)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 20 more
Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException: Imported module [ietf-inet-types] was not found. [at META-INF/yang/DaveTest.yang:6:8]
at org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException.throwIf(InferenceException.java:47)
at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ImportStatementDefinition$1.prerequisiteFailed(ImportStatementDefinition.java:116)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.failModifier(ModifierImpl.java:93)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.failModifiers(SourceSpecificContext.java:294)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.addSourceExceptions(BuildGlobalContext.java:268)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.completePhaseActions(BuildGlobalContext.java:343)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:200)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:128)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:145)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.processYang(YangToSourcesProcessor.java:191)
... 25 more
Мой pom.xml в основном каталоге /opt/odl_l3vpn/dave. Я добавил зависимость 'ietf-inet-types' в 'build', но мог поместить ее в неправильное место из-за недостатка знаний о pom-файлах.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
<dependencies>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-inet-types</artifactId>
<version>2010.09.24.8.5-SNAPSHOT</version>
<type>bundle</type>
</dependency>
</dependencies>
</plugin>
</plugins>
Где будет правильное место для добавления зависимости, чтобы мой YANG-файл мог компилироваться? Или вы можете указать мне правильное направление? Заранее спасибо.
2 ответа
Спасибо за Дэвида, я смог выяснить ответ, сделав следующее:
Я загрузил theietf-yang-types-2010.09.24.9.3-Boron-SR3.jar с https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/mdsal/model/ietf-inet-types/2010.09.24.9.3-Boron-SR3/ и поместите его в каталог / tmp.
Затем я изменил проект /api/pom.xml, включив в него информацию о зависимостях.
Затем я выполнил следующую команду в корневом каталоге проекта: mvn install:install-file -DgroupId=org.opendaylight.mdsal.model -DartifactId=ietf-inet-types -Dversion=2010.09.24.8.5-SNAPSHOT -Dpackaging=bundle -Dfile=/ TMP / IETF-янь-типов-2010.09.24.9.3-бор-SR3.jar
'Mvn clean install -nsu' работал нормально, и все скомпилировано.
Ну и дела, кое-что об OpenDaylight, я действительно могу ответить.
В выходных данных журнала вы увидите упоминание "org.opendaylight.yangtools: yang-maven-plugin". Если вы не настроите это, вы получите значения по умолчанию, что не так много. Вам нужно научиться настраивать это. Вы должны быть в состоянии найти документацию для этого на сайте ODL. Если у вас есть плагин YangIDE Eclipse (который, к сожалению, больше не поддерживается), вы можете увидеть примеры в проектах, которые он создает.
В частности, и я не помню синтаксис, я считаю, что зависимости Yang должны быть указаны как часть конфигурации yang-maven-plugin.