Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ビルドツールの設定が有効活用されていない #830

Open
shinsuke-mat opened this issue Jan 19, 2021 · 3 comments
Open

ビルドツールの設定が有効活用されていない #830

shinsuke-mat opened this issue Jan 19, 2021 · 3 comments
Assignees

Comments

@shinsuke-mat
Copy link
Member

shinsuke-mat commented Jan 19, 2021

ref #596

前提

題材がビルドツール(maven/gradle)を利用している場合の話.

前提として,kgpの起動パラメタは2種類ある.
A. GAのパラメタ(兄弟の数,世代の数,タイムリミット等)
B. 題材の実行情報(ソースパス,テストパス,クラスパス)

やりたいこと

題材がビルドツールを利用している場合,Bの情報はビルドツールの設定を自動的に取り込むべき.
kgp利用者による明示的な指定が不要になり,kgpの可搬性が上がる.

#596 で部分的にその機能が実装された.
build.gradlepom.xml 等の設定ファイルを読み込んで,ソースパス・テストパスを自動解決する.

問題点

しかし,設定ファイルの読み込みはあくまで静的な処理であるため,依存解決は適用されない.
よってクラスパスの適切な処理ができていない.Bの一部の情報が解決できていない.
(あとAも微妙に不完全)

idea

もしkgp内で各種ビルドツールを実行できれば,
以下依存解決関連の処理をビルドツールに委譲して,クラスパスの解決が可能になる.

  • 依存jarのDL
  • 依存jarの物理パスの取得(C:\users.m2...\xx.jar等)
@shinsuke-mat
Copy link
Member Author

maven/gradleはjavaで実装されており,スタンドアローンではなくライブラリとして利用もできる.
https://mvnrepository.com/artifact/org.gradle/gradle-tooling-api
https://mvnrepository.com/artifact/org.apache.maven/maven-embedder

手元で上記2つのビルドツールをkgp内から実行して,
動的に依存解決できることは確認した.

@shinsuke-mat
Copy link
Member Author

shinsuke-mat commented Jan 19, 2021

こっから議論.

kgpのcuiからどのようにビルドツールの設定を読み込ませるかを検討すべき.

ビルドツールの実行はそれなりに時間を要するので,常にビルドツールを実行するのはどうだろう.
ただし差分ビルドが適用されるので2回目はそれなりに高速.

問題A

ビルドツールの設定ファイルがあった場合に自動的に読み込むか否か.

$ java -jar kgp.jar          # A1. 自動的に読み込む
$ java -jar kgp.jar --gradle # A2. 指定すれば自動的に読み込む

問題B.

同項目の設定が重複した場合にどうする?

$ java -jar kgp.jar --config kgp.toml --gradle                     # toml vs gradle
$ java -jar kgp.jar --config kgp.toml --gradle --src src/main/java # toml vs gradle vs cui

設定内容に齟齬があったときはどれを優先する?

起動時にオプション一覧が並ぶので,一応利用者にどの値が反映されたかは見える.
見えるだけで伝わるかは別問題.警告を出す?

[WARN] the following kgp parameters have inconsistency. we pick * value
--src
  - *src/main/java (from build.gradle)
  - src (from cui parameter)

@shinsuke-mat
Copy link
Member Author

結論

  • --gradle は追加しない.優先制御もしない.ビルドツールファイルがあったら常にそれを読む.
  • 読み込みの優先順位は常に cui>toml>gradle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant