在 Opendaylight 中,每当我做出更改时,我都会构建整个项目而不是特定项目。mvn clean install -DskipTests=true.. 有没有办法跳过整个构建并构建项目的特定 pom.xml.. 例如在 ovsdb 中,如果我想单独运行南向项目,我必须做什么?
3 回答
可能有更好的方法,但我使用的解决方法是:
我使用 bash 脚本来复制 jars + 配置文件。
如果我对模块进行代码更改,
- 我构建了修改后的模块
- 执行脚本。要将构建的 jar 文件、配置文件复制到解压缩
System
的 ODL 分发文件夹内的特定文件夹位置。 - 我重新启动ODL。bin/karaf 干净。
我用来更新常见 jars+config 的 bash 脚本的一部分
本地.sh:
elif [ $1 == common ]; then
cp /home/user/workspaces/workspace-odl/myproject/common/implementation/target/common-impl-2.0.0-SNAPSHOT.jar /home/user/controller/myproject-karaf-2.0.0-SNAPSHOT/system/com/myproject/common-impl/2.0.0-SNAPSHOT/common-impl-2.0.0-SNAPSHOT.jar
cp /home/user/workspaces/workspace-odl/myproject/common/model/target/common-model-2.0.0-SNAPSHOT.jar /home/user/controller/myproject-karaf-2.0.0-SNAPSHOT/system/com/myproject/common-model/2.0.0-SNAPSHOT/common-model-2.0.0-SNAPSHOT.jar
cp /home/user/workspaces/workspace-odl/myproject/common/config/src/main/resources/initial/89-common.xml /home/user/controller/myproject-karaf-2.0.0-SNAPSHOT/system/com/myproject/common-config/2.0.0-SNAPSHOT/common-config-2.0.0-SNAPSHOT-config.xml
rm /home/user/controller/myproject-karaf-2.0.0-SNAPSHOT/etc/opendaylight/karaf/89-common.xml
echo "Updated common"
执行:
./local.sh common
这将复制更新的 jar,下次运行 ODL 时,将获取更新的 jar。
这很快,并且不需要我重建整个 ODL 项目。
如果您是第一次使用命令构建整个项目
mvn clean install -DskipTests -Dcheckstyle.skip=true
对于后续更改,假设您已使用上述命令更改了 southbound-impl build southbound-impl。
接下来使用上述命令构建 southbound-karaf。然后你可以启动 karaf 进行测试。对于目标/程序集/bin/karaf.[sh|bat]
假设您在Mavensettings.xml
中有适当的条目,您可以通过在其文件夹中运行 Maven 在 OpenDaylight Maven 项目中构建任何模块;为ovsdb
southbound
:
cd southbound
mvn clean install
或者,从项目的根目录:
mvn -f southbound clean install
如果您只想构建一个模块(没有它的子模块):
mvn -pl southbound clean install
(这些都是标准的 Maven 选项。)
OpenDaylight 包含一些不错的附加功能,可用于更快地迭代构建:
配置
q
文件会跳过所有对生成的工件没有贡献的目标(静态分析、测试、文档......):mvn -f southbound clean install -Pq
更新的 JAR 可以使用以下变量直接安装在预先存在的 Karaf 系统文件夹中
addInstallRepositoryPath
:mvn -f southbound clean install -DaddInstallRepositoryPath=.../karaf/system
(替换
...
为适当的路径)。
这些可以组合,所以
mvn -f southbound clean install -DaddInstallRepositoryPath=.../karaf/system -Pq
在现有的 Karaf 中构建和安装 JAR(它甚至可以运行——它将重新加载包)。