Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在bazel构建中调用java代码(类似于定制maven插件)?_Java_Maven_Bazel - Fatal编程技术网

有没有办法在bazel构建中调用java代码(类似于定制maven插件)?

有没有办法在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

我制作了一个插件,在编译maven模块时运行它。但既然我的组织现在正在迁移到bazel——我们有没有办法在bazel中直接运行插件(Mojo)

如果没有,在bazel构建java代码的过程中,有没有一种方法可以调用另一个java代码,它拥有所有的项目信息,就像mojos中的
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
通常给你的任何东西。这不会解决问题。那么你能再澄清一些吗?您需要哪个模块的运行时依赖项?你的插件所作用的那个还是插件本身?了解Bazel
deps
就足够了吗?您是在谈论Java 9模块还是其他一些概念?如果您也能分享插件的用途,可能会有所帮助。