如何导入Bazel project?
1. import Bazel project .
2. 设置bazel 目录。(如果未设置过 setting位置:idea preference ->other setting)
3. create from scratch.
4. targets 中指定你要导入的目录
例如 //java/…代表workplace目录中的java目录下所有的file.
( directories 相当于设置source root目录, 比如填java)
Wrokflow:
1. To know which targets can be built in your project, Bazel inspects files.
bazel 通过扫描 java_binary 来检查哪些文件需要build. (通常binary 将引用Library, Library中可以通过visibility 属性指定访问权限)
2. (更新中)
导入整个project的依赖?
bazel build java/… …代表所有文件。
引入第三方依赖出现的问题失效?
1. 导入了bazel工程后,在project根目录会生成 bazel-projectname 里面有个external 文件夹,保存着所有用到的依赖。
2. java_binary 和library 中的desp 指的是 src中的java文件要依赖哪些包。这是区分开的。(Spring boot通常在binary中会有一个启动主类, 所以要在binary中添加spring-boot的依赖, 剩下的依赖放在library中 )
bazel编译测试异常。
dao层接口注解不能使用@Repository, 必须使用@Mapper。
语句绑定异常: 包空间不对.
MyBatis 插入空值时,需要指定JdbcType
http://blog.youkuaiyun.com/muyangbin/article/details/50300353
添加一个jar包。
1. 现在总根目录的workplace 中 添加 maven_jar .
1.1 artifact 写groupId+artifactId+version。
1.2 name 自己取, 现在是把“.”“ - ” 等符号改为下划线.
1.3 build 整个project ,生成sha1码,加入到 sha1属性。
例如加入:
org.projectlombok
lombok-maven
1.16.16.0
应为:
maven_jar(
name = “org_projectlombok_lombok_maven”,
artifact = “org.projectlombok:lombok-maven:1.16.16.0”,
sha1 = “e6cb541461c2834bdea3eb920f1884d1eb508b50”,
)
2.在thirty-part/java中引用workplace 的 jar.(加个@和//jar)
例如:
java_library(
name = “org_apache_httpcomponents_httpcore”,
visibility = [“//visibility:public”],
exports = [
“@org_projectlombok_lombok_maven//jar”,
],
)
3.bazel的deps通过 thirty-part/java引用。
如何生成workspace 和 build.
clone bazel 源码 根路径下执行 bazel run //src/tools/generate_workspace – –bazel_project=/Users/fury/flt/demo/bazelGenerate –artifact=org.projectlombok:lombok:1.16.16
可以吧不指定项目名。
lombok 插件未生效
Lombok is a compile-time plugin. You have to use a Bazel java_plugin rule
http://bazel.io/docs/be/java.html#java_plugin
The following works for me:
java_library(
name = “app”,
srcs = glob([“src/main/java/*/.java”]),
deps = [
“javax.servlet.api”,
“:lombok”,
“@slf4j_jar//jar”,
],
)
java_plugin(
name = “lombok_plugin”,
processor_class = “lombok.launch.AnnotationProcessorHider$AnnotationProcessor”,
deps = [“@lombok_jar//jar”],
)
java_library(
name = “lombok”,
exports = [“@lombok_jar//jar”],
exported_plugins = [“:lombok_plugin”],
)
lombok warning :Cannot force a new processing round. Lombok won’t work.
项目根路径下加lombok.config文件,配置 javac生成注解属性为false。
运行时修改jvm配置?
bazel build –jvmopt=”-server -Xms256m” //java/com/example/common/foo:all