{"id":292,"date":"2023-01-30T11:53:44","date_gmt":"2023-01-30T02:53:44","guid":{"rendered":"https:\/\/hirabay.net\/?p=292"},"modified":"2023-01-30T11:53:47","modified_gmt":"2023-01-30T02:53:47","slug":"%e3%80%90openrewrite%e3%80%91%e3%82%b3%e3%83%bc%e3%83%89%e3%82%92%e8%87%aa%e5%8b%95%e3%81%a7%e4%b8%80%e6%8b%ac%e5%a4%89%e6%9b%b4","status":"publish","type":"post","link":"https:\/\/hirabay.net\/?p=292","title":{"rendered":"\u3010OpenRewrite\u3011\u30b3\u30fc\u30c9\u3092\u81ea\u52d5\u3067\u4e00\u62ec\u5909\u66f4"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u904b\u7528\u3057\u3066\u3044\u308b\u3068\u3001OSS\u306eversion up\u3084\u8106\u5f31\u6027\u5bfe\u5fdc\u7b49\u3067\u8907\u6570\u306e\u30b3\u30fc\u30c9\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u540c\u3058\u5909\u66f4\u3092\u5165\u308c\u3066\u3044\u304b\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5909\u66f4\u5185\u5bb9\u3055\u3048\u6c7a\u307e\u3063\u3066\u3057\u307e\u3048\u3070\u5358\u7d14\u4f5c\u696d\u3092\u3059\u308b\u3060\u3051\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3067\u304d\u308c\u3070\u81ea\u52d5\u5316\u3057\u305f\u3044\u3067\u3059\u3088\u306d\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u3001<strong><span class=\"keiko_yellow\">OpenRewrite\u306a\u3089\u5b9f\u73fe\u3067\u304d\u307e\u3059\uff01<\/span><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u8a18\u4e8b\u3067\u306f\u521d\u3081\u3066OpenRewrite\u3092\u4f7f\u3046\u65b9\u5411\u3051\u306b\u5c0e\u5165\u65b9\u6cd5\u304b\u3089\u5b9f\u969b\u306b\u81ea\u52d5\u3067\u5909\u66f4\u3092\u3059\u308b\u65b9\u6cd5\u307e\u3067\u7d39\u4ecb\u3057\u307e\u3059\uff01<\/p>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>110<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>115<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>122<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">\n  <li class=\"first\">\n    <a href=\"#i-0\">\u5bfe\u8c61<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-1\">\u5c0e\u5165\u624b\u9806<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-2\">\u5b9f\u884c\u65b9\u6cd5<\/a>\n    <ul class=\"menu_level_1\">\n      <li class=\"first\">\n        <a href=\"#i-3\">\u76ee\u7684\u306e\u30ec\u30b7\u30d4\u3092\u63a2\u3059<\/a>\n      <\/li>\n      <li>\n        <a href=\"#i-4\">build.gradle\u3092\u5909\u66f4<\/a>\n      <\/li>\n      <li class=\"last\">\n        <a href=\"#i-5\">\u5b9f\u884c<\/a>\n      <\/li>\n    <\/ul>\n  <\/li>\n  <li>\n    <a href=\"#i-6\">\u30ec\u30b7\u30d4\u306e\u7ba1\u7406<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-7\">\u72ec\u81ea\u30ec\u30b7\u30d4\u306e\u958b\u767a<\/a>\n    <ul class=\"menu_level_1\">\n      <li class=\"first\">\n        <a href=\"#i-8\">\u6e96\u5099<\/a>\n      <\/li>\n      <li>\n        <a href=\"#i-9\">\u958b\u767a<\/a>\n      <\/li>\n      <li class=\"last\">\n        <a href=\"#i-10\">\u30ec\u30b7\u30d4\u306e\u5b9a\u7fa9<\/a>\n      <\/li>\n    <\/ul>\n  <\/li>\n  <li class=\"last\">\n    <a href=\"#i-11\">Maven Repository\u3078\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/a>\n    <ul class=\"menu_level_1\">\n      <li class=\"first last\">\n        <a href=\"#i-12\">\u5229\u7528\u5074\u306e\u8a2d\u5b9a<\/a>\n      <\/li>\n    <\/ul>\n  <\/li>\n<\/ul>\n\n      \n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u5bfe\u8c61<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gradle<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">\u5c0e\u5165\u624b\u9806<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306fGradle\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306bOpenRewrite\u3092\u5c0e\u5165\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>plugins {\n    ...\n    \/\/ OpenRewrite\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u8ffd\u52a0\n    \/\/ \u6700\u65b0version\u306f\u3053\u3061\u3089\u3067\u78ba\u8a8d\uff1ahttps:\/\/plugins.gradle.org\/plugin\/org.openrewrite.rewrite\n    id(\"org.openrewrite.rewrite\") version(\"5.34.2\")\n}\n\n...\n\nrewrite {\n    activeRecipe(\n            \/\/ \u3053\u3053\u306b\u66f8\u304d\u63db\u3048\u306e\u30ec\u30b7\u30d4\u3092\u8ffd\u52a0\u3059\u308b\n    )\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3060\u3051\u3067\u3059\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-2\">\u5b9f\u884c\u65b9\u6cd5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u3068\u3057\u3066\u4ee5\u4e0b\u306eJava\u30b3\u30fc\u30c9\u3092\u5bfe\u8c61\u306b\u3001<br>\u81ea\u52d5\u30d5\u30a9\u30fc\u30de\u30c3\u30c6\u30a3\u30f3\u30b0\u3092OpenRewrite\u3067\u5bfe\u5fdc\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>public class SampleClass {\n\/\/ \u5148\u982d\u306b\u30b9\u30da\u30fc\u30b9\u3092\u5165\u308c\u305f\u3044\nprivate String message;\n}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u76ee\u7684\u306e\u30ec\u30b7\u30d4\u3092\u63a2\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u3001\u81ea\u52d5\u7684\u306b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3057\u3066\u304f\u308c\u308b\u30ec\u30b7\u30d4\u3092\u63a2\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.openrewrite.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.openrewrite.org\/<\/a> \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u691c\u7d22\u7a93\u3067\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-1024x306.png\" alt=\"\" class=\"wp-image-293\" width=\"589\" height=\"175\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-1024x306.png 1024w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-300x90.png 300w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-768x230.png 768w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-1536x460.png 1536w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20-940x281.png 940w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-20.png 1898w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306fJava\u306e\u30b3\u30fc\u30c9\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306a\u306e\u3067Java\u306eFormat\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-1024x401.png\" alt=\"\" class=\"wp-image-294\" width=\"591\" height=\"231\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-1024x401.png 1024w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-300x117.png 300w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-768x301.png 768w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-1536x601.png 1536w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21-940x368.png 940w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-21.png 1898w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3046\u3059\u308b\u3068\u95a2\u9023\u30ec\u30b7\u30d4\u306e\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001<br>\u540d\u524d\u304b\u3089\u76ee\u7684\u3092\u9054\u6210\u3067\u304d\u305d\u3046\u306a\u3082\u306e\u3092\u9078\u629e\u3057\u307e\u3059\u3002<br>\u203b\u3072\u3068\u3064\u306b\u3057\u307c\u308c\u306a\u304b\u3063\u305f\u3089\u3001\uff11\u3064\uff11\u3064\u8a73\u7d30\u3092\u78ba\u8a8d\u3057\u305f\u308a\u4f7f\u3063\u3066\u307f\u305f\u308a\u3057\u307e\u3057\u3087\u3046\uff01<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-1024x418.png\" alt=\"\" class=\"wp-image-295\" width=\"570\" height=\"232\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-1024x418.png 1024w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-300x122.png 300w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-768x314.png 768w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-1536x627.png 1536w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22-940x384.png 940w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/image-22.png 1898w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">build.gradle\u3092\u5909\u66f4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ec\u30b7\u30d4\u306e\u8a73\u7d30\u30da\u30fc\u30b8\u307e\u3067\u305f\u3069\u308a\u7740\u3051\u308c\u3070\u3001<br>\u5177\u4f53\u7684\u306a\u4f7f\u3044\u65b9\u304c\u66f8\u304b\u308c\u3066\u3044\u308b\u306e\u3067\u305d\u306e\u901a\u308a\u306b<code>build.grale<\/code>\u3092\u5909\u66f4\u3057\u307e\u3057\u3087\u3046\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>...\n\nrewrite {\n    activeRecipe(\"org.openrewrite.java.format.AutoFormat\")\n}\n\n...<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u5b9f\u884c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ec\u30b7\u30d4\u306e\u8a2d\u5b9a\u304c\u7d42\u308f\u3063\u305f\u3089\u3042\u3068\u306f\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3059\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenRewrite\u3067\u306fDryrun\uff08\u203b\uff09\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u4e8b\u524d\u306b\u5b9f\u884c\u3057\u3066\u304a\u304f\u3068\u3088\u3044\u3067\u3059\uff01<br>\uff08\u203b\uff09Dryrun\u306f\u4eee\u5b9f\u884c\u3092\u3057\u3066\u5b9f\u884c\u7d50\u679c\u3060\u3051\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-bash\" data-file=\"dryrun\" data-lang=\"Bash\"><code>$ .\/gradlew rewriteDryRun<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u884c\u7d50\u679c\u306f <code>build\/reports\/rewrite\/rewrite.patch<\/code> \u306b\u51fa\u529b\u3055\u308c\u3066\u3044\u307e\u3059\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u30b3\u30fc\u30c9\u3060\u3068\u3053\u3093\u306a\u611f\u3058<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-diff\" data-file=\"rewrite.patch\" data-lang=\"Diff\"><code> public class SampleClass {\n-private String message;\n+    private String message;\n }<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u554f\u984c\u306a\u3051\u308c\u3070\u672c\u5b9f\u884c\u3092\u3057\u307e\u3057\u3087\u3046\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-bash\" data-lang=\"Bash\"><code>$ .\/gradlew rewriteRun<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u307e\u3067\u3067\u3001\u4e00\u901a\u308a\u5b9f\u884c\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u304b\u3089\u306f\u5b9f\u7528\u6027\u306e\u3042\u308b\u3053\u3068\u3092\u3082\u3046\u5c11\u3057\u7d39\u4ecb\u3057\u307e\u3059\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-6\">\u30ec\u30b7\u30d4\u306e\u7ba1\u7406<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u307b\u3069\u306f<code>activeRecipe<\/code>\u3067\u30ec\u30b7\u30d4\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u30ec\u30b7\u30d4\u306e\u767b\u9332\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3057\u304b\u3057\u3001\u3082\u306e\u306b\u3088\u3063\u3066\u306f<code>rewrite.yml<\/code>\u304c\u5fc5\u8981\u306b\u306a\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u3048\u3070yaml\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3067\u304d\u308b\u4ee5\u4e0b\u306e\u30ec\u30b7\u30d4\u3067\u3059\u3002<\/p>\n\n\n<p><\/p><div class=\"linkcard\"><div class=\"lkc-external-wrap\"><div class=\"lkc-unlink\" title=\"https:\/\/docs.openrewrite.org\/reference\/recipes\/yaml\/changevalue\"><div class=\"lkc-card\"><div class=\"lkc-info\"><img loading=\"lazy\" decoding=\"async\" class=\"lkc-favicon\" src=\"https:\/\/www.google.com\/s2\/favicons?domain=docs.openrewrite.org\" alt=\"\" width=\"16\" height=\"16\"><div class=\"lkc-domain\">docs.openrewrite.org<\/div><\/div><div class=\"lkc-content\"><figure class=\"lkc-thumbnail\"><img decoding=\"async\" class=\"lkc-thumbnail-img\" src=\"\/\/hirabay.net\/wp-content\/uploads\/pz-linkcard\/cache\/00422acfab060eac5df41cf700d2a8e442a6e6bfa87809fb6669ce46e151a114.jpeg\" alt=\"\"><\/figure><div class=\"lkc-title\"><div class=\"lkc-title-text\">Change value<\/div><\/div><div class=\"lkc-url\"><strike>https:\/\/docs.openrewrite.org\/reference\/recipes\/yaml\/changevalue<\/strike><\/div><div class=\"lkc-excerpt\"><\/div><\/div><div class=\"clear\"><\/div><\/div><\/div><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u30ec\u30b7\u30d4\u3092\u5229\u7528\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u307e\u305a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u76f4\u4e0b\u306b<code>rewrite.yml<\/code>\u3092\u7528\u610f\u3057<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-yaml\" data-file=\"rewrite.yml\" data-lang=\"Yaml\"><code>type: specs.openrewrite.org\/v1beta\/recipe\nname: sample.SampleRecipe\nrecipeList:\n  - org.openrewrite.yaml.ChangeValue:\n      oldKeyPath: $.path1.path2\n      value: value2<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>name<\/code>\u3067\u6307\u5b9a\u3057\u305f\u8b58\u5225\u5b50\u3092<code>activeRecipe<\/code>\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-plain\"><code>rewrite {\n    activeRecipe(\"sample.SampleRecipe\")\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u3088\u3046\u306b<code>rewrite.yml<\/code>\u304c\u5fc5\u8981\u306b\u306a\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308b\u306e\u3067\u305d\u308c\u3060\u3063\u305f\u3089\u6700\u521d\u304b\u3089<code>rewrite.yml<\/code>\u3067\u30ec\u30b7\u30d4\u3092\u7ba1\u7406\u3057\u3066\u304a\u3044\u305f\u65b9\u304c\u826f\u3044\u3088\u306d\u3068\u601d\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3061\u306a\u307f\u306b\u30ec\u30b7\u30d4\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8907\u6570\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-yaml\" data-file=\"rewrite.yml\" data-lang=\"Yaml\"><code>type: specs.openrewrite.org\/v1beta\/recipe\nname: sample.SampleRecipe\nrecipeList:\n  - org.openrewrite.yaml.ChangeValue:\n      oldKeyPath: $.path1.path2\n      value: value2\n  - org.openrewrite.java.format.AutoFormat<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">\u72ec\u81ea\u30ec\u30b7\u30d4\u306e\u958b\u767a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u691c\u7d22\u3057\u3066\u3082\u3084\u308a\u305f\u3044\u3053\u3068\u3092\u5b9f\u73fe\u3067\u304d\u308b\u30ec\u30b7\u30d4\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u72ec\u81ea\u306b\u30ec\u30b7\u30d4\u3092\u958b\u767a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u306f\u7279\u5b9a\u306e\u30af\u30e9\u30b9\u306b<code>hello<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u30ec\u30b7\u30d4\u3092\u81ea\u4f5c\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u6e96\u5099<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u72ec\u81ea\u30ec\u30b7\u30d4\u306fgradle\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067Java\u3067\u958b\u767a\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u305f\u4e0a\u3067\u3001<code>build.gradle<\/code>\u306b\u5909\u66f4\u3092\u52a0\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-file=\"build.gradle\" data-lang=\"Java\"><code>plugins {\n    ...\n    \/\/ maven repository\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u305f\u3081\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\n    id 'maven-publish'\n}\n\ndependencies {\n    ...\n\n    \/\/ Java\u95a2\u9023\u306e\u30ec\u30b7\u30d4\u958b\u767a\u306b\u5fc5\u8981\n    implementation(\"org.openrewrite:rewrite-java:7.35.0\")\n    runtimeOnly(\"org.openrewrite:rewrite-java-8:7.35.0\")\n    runtimeOnly(\"org.openrewrite:rewrite-java-11:7.35.0\")\n    runtimeOnly('org.openrewrite:rewrite-java-17:7.35.0')\n\n    \/\/ Maven\u95a2\u9023\u306e\u30ec\u30b7\u30d4\u958b\u767a\u306b\u5fc5\u8981\n    \/\/ implementation(\"org.openrewrite:rewrite-maven:7.35.0\")\n\n    \/\/ Yaml\u95a2\u9023\u306e\u30ec\u30b7\u30d4\u958b\u767a\u306b\u5fc5\u8981\n    \/\/ implementation(\"org.openrewrite:rewrite-yaml:7.35.0\")\n\n    \/\/ Properties\u95a2\u9023\u306e\u30ec\u30b7\u30d4\u958b\u767a\u306b\u5fc5\u8981\n    \/\/ implementation(\"org.openrewrite:rewrite-properties:7.35.0\")\n\n    \/\/ XML\u95a2\u9023\u306e\u30ec\u30b7\u30d4\u958b\u767a\u306b\u5fc5\u8981\n    \/\/ implementation(\"org.openrewrite:rewrite-xml:7.35.0\")\n\n    \/\/ \u30ec\u30b7\u30d4\u306e\u30c6\u30b9\u30c8\u306b\u5fc5\u8981\n    \/\/ testImplementation(\"org.openrewrite:rewrite-test:7.35.0\")\n}\n\n\/\/ maven\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u8a2d\u5b9a\npublishing {\n    publications {\n        mavenJava(MavenPublication) {\n            groupId = 'sample'\n            artifactId = 'openrewrite-sample'\n\n            from components.java\n        }\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u958b\u767a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306b\u30ec\u30b7\u30d4\u306e\u4e2d\u8eab\u3001\u66f8\u304d\u63db\u3048\u5185\u5bb9\u306e\u5b9f\u88c5\u3067\u3059\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>package sample.recipe;\n\npublic class AddHelloMethod extends Recipe {\n    \/\/ \u8868\u793a\u540d\u306a\u306e\u3067\u4efb\u610f\u306e\u6587\u5b57\u5217\u3067OK\n    @Override\n    public String getDisplayName() {\n        return \"Add Hello Method\";\n    }\n\n    \/\/ Visitor\u30af\u30e9\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u8fd4\u5374\u3059\u308b\n    @Override\n    protected JavaIsoVisitor&lt;ExecutionContext&gt; getVisitor() {\n        return new AddHelloMethodVisitor();\n    }\n\n    \/\/ Visitor\u30af\u30e9\u30b9\uff08\u66f8\u304d\u63db\u3048\u306e\u5177\u4f53\u5185\u5bb9\u3092\u5b9f\u88c5\u3059\u308b\u30af\u30e9\u30b9\uff09\n    public class AddHelloMethodVisitor extends JavaIsoVisitor&lt;ExecutionContext&gt; {\n\n        @Override\n        public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, ExecutionContext executionContext) {\n            \/\/ \u6307\u5b9a\u3057\u305f\u30af\u30e9\u30b9\u4ee5\u5916\u306f\u30b9\u30ad\u30c3\u30d7\n            if (!classDecl.getSimpleName().equals(\"SampleClass\")) {\n                return classDecl;\n            }\n\n            \/\/ hello\u30e1\u30bd\u30c3\u30c9\u306e\u5b58\u5728\u3092\u78ba\u8a8d\n            boolean helloMethodExists = classDecl.getBody().getStatements().stream()\n                    .filter(statement -&gt; statement instanceof J.MethodDeclaration)\n                    .map(J.MethodDeclaration.class::cast)\n                    .anyMatch(methodDeclaration -&gt; methodDeclaration.getName().getSimpleName().equals(\"hello\"));\n            \/\/ hello\u30e1\u30bd\u30c3\u30c9\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u30b9\u30ad\u30c3\u30d7\n            if (helloMethodExists) {\n                return classDecl;\n            }\n\n            \/\/ \u633f\u5165\u3059\u308b\u30b3\u30fc\u30c9\u3092\u5b9a\u7fa9\n            var helloTemplate = JavaTemplate.builder(this::getCursor, \"\"\"\n                        public String hello() {\n                            return \"Hello, OpenRewrite!!!\";\n                        }\n                        \"\"\")\n                    .build();\n\n            \/\/ \u30af\u30e9\u30b9\u306e\u6700\u5f8c\u5c3e\u306b\u5b9a\u7fa9\u3057\u305f\u30b3\u30fc\u30c9\u3092\u633f\u5165\n            classDecl = classDecl.withBody(\n                    classDecl.getBody().withTemplate(helloTemplate, classDecl.getBody().getCoordinates().lastStatement())\n            );\n\n            return classDecl;\n        }\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uff08\u66f8\u304d\u63db\u3048\u305f\u3044\u5185\u5bb9\u306b\u3088\u3063\u3066\u5b9f\u88c5\u65b9\u6cd5\u304c\u3044\u308d\u3044\u308d\u3042\u308a\u305d\u3046\u306a\u306e\u3067\u5225\u8a18\u4e8b\u3067\u307e\u3068\u3081\u305f\u3044\u3001\u3001\u3001\uff09<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u30ec\u30b7\u30d4\u306e\u5b9a\u7fa9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306b\u4f5c\u6210\u3057\u305f\u30af\u30e9\u30b9\u3092OpenRewrite\u304c\u8a8d\u8b58\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a2d\u5b9a\u306f<code>src\/main\/resources\/META-INF\/rewrite\/rewrite.yml<\/code>\u3067\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-yaml\" data-file=\"rewrite.yml\" data-lang=\"Yaml\"><code># \u56fa\u5b9a\ntype: specs.openrewrite.org\/v1beta\/recipe\n# \u30ec\u30b7\u30d4\u306e\u8b58\u5225\u5b50\u3002\u5229\u7528\u5074\u306e\u300crecipeList\u300d\u3067\u6307\u5b9a\u3059\u308b\nname: sample.SampleRecipe\nrecipeList:\n  # \u5b9a\u7fa9\u3057\u305f\u30af\u30e9\u30b9\u306e\u300c\u30d1\u30c3\u30b1\u30fc\u30b8\uff0b\u30af\u30e9\u30b9\u540d\u300d\u3092\u6307\u5b9a\u3059\u308b\n  - sample.recipe.AddHelloMethod<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">Maven Repository\u3078\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u5f8c\u306bMaven Repository\u3078\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304a\u3057\u307e\u3044\u3067\u3059\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-plain\"><code>$ .\/gradlew publish\n\n# \u500b\u4eba\u958b\u767a\u3084\u304a\u8a66\u3057\u4e2d\u306f\u30ed\u30fc\u30ab\u30eb\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f7f\u3046\u306e\u3082\u3042\u308a\n# $ .\/gradlew publichToMavenLocal<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u5229\u7528\u5074\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>\ndependencies {\n    ...\n    \/\/ rewrite\u3068\u3044\u3046\u72ec\u81ea\u306e\u95a2\u6570\u3067\u4f9d\u5b58\u3092\u8ffd\u52a0\n    rewrite('sample:openrewrite-sample:+')\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-yaml\" data-file=\"rewrite.yml\" data-lang=\"Yaml\"><code>recipeList:\n  # \u72ec\u81ea\u30ec\u30b7\u30d4\u306e\u300cname\u300d\u3092\u6307\u5b9a\n  - sample.SampleRecipe<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u904b\u7528\u3057\u3066\u3044\u308b\u3068\u3001OSS\u306eversion up\u3084\u8106\u5f31\u6027\u5bfe\u5fdc\u7b49\u3067\u8907\u6570\u306e\u30b3\u30fc\u30c9\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u540c\u3058\u5909\u66f4\u3092\u5165\u308c\u3066\u3044\u304b\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 \u5909\u66f4\u5185\u5bb9\u3055\u3048\u6c7a\u307e\u3063\u3066\u3057\u307e\u3048\u3070\u5358\u7d14\u4f5c\u696d\u3092\u3059\u308b\u3060\u3051\u306b\u306a\u3063\u3066\u3057 &#8230; <\/p>\n","protected":false},"author":1,"featured_media":301,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[33,40,60,61,32],"class_list":["post-292","post","type-post","status-publish","format-standard","has-post-thumbnail","category-6","tag-gradle","tag-java","tag-openrewrite","tag-61","tag-32"],"jetpack_featured_media_url":"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/openrewrite.png","_links":{"self":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=292"}],"version-history":[{"count":4,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/292\/revisions"}],"predecessor-version":[{"id":300,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/292\/revisions\/300"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/media\/301"}],"wp:attachment":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}