有没有办法在bazel构建中调用java代码(类似于定制maven插件)?
我制作了一个插件,在编译maven模块时运行它。但既然我的组织现在正在迁移到bazel——我们有没有办法在bazel中直接运行插件(Mojo) 如果没有,在bazel构建java代码的过程中,有没有一种方法可以调用另一个java代码,它拥有所有的项目信息,就像mojos中的有没有办法在bazel构建中调用java代码(类似于定制maven插件)?,java,maven,bazel,Java,Maven,Bazel,我制作了一个插件,在编译maven模块时运行它。但既然我的组织现在正在迁移到bazel——我们有没有办法在bazel中直接运行插件(Mojo) 如果没有,在bazel构建java代码的过程中,有没有一种方法可以调用另一个java代码,它拥有所有的项目信息,就像mojos中的MavenProject参数一样?您可以使用带有java\u二进制文件的作为插件的工具。大概是这样的: java_binary( name = "my_plugin", ... ) gen
MavenProject
参数一样?您可以使用带有java\u二进制文件的
作为插件的工具。大概是这样的:
java_binary(
name = "my_plugin",
...
)
genrule(
name = "run_plugin",
srcs = [],
cmd = "$(location my_plugin) > \"$@\"",
outs = ["plugin_output"],
tools = [":my_plugin"],
)
在本例中,您应该能够使用bazel build:plugin\u output
运行您的插件。听起来您可能想尝试的是java\u插件
,它用于运行带有java\u二进制
和java\u库
的注释处理器:
并使用java\u binary
或java\u library
的plugins
属性指定插件:
java\u二进制(
名称=。。。,
srcs=。。。,
deps=。。。,
插件=[“:我的插件”],
)
java_插件(
name=“我的插件”,
srcs=。。。,
deps=。。。,
处理器_class=“…”,
)
你的插件做什么?什么样的插件与maven模块相关:我制作了一个插件,在编译maven模块时运行它
?我怀疑您是否可以在Bazel中执行mojo,因为据我所知,Bazel主要是用C/C++实现的?特别是,您的插件是否修改或生成文件?它生成文件。我想获得执行它的模块的类加载器(urlclassloader也可以工作,但我需要知道模块的运行时依赖关系)。genrule会提供给我吗?这个例子只是用genrule中的java-jar
执行你的插件,所以我想它会给你java-jar
通常给你的任何东西。这不会解决问题。那么你能再澄清一些吗?您需要哪个模块的运行时依赖项?你的插件所作用的那个还是插件本身?了解Bazeldeps
就足够了吗?您是在谈论Java 9模块还是其他一些概念?如果您也能分享插件的用途,可能会有所帮助。