如何将命令行参数添加到 jvm_binary 目标?

How do I add a command line argument to a jvm_binary target?

我有一个 JVM 二进制目标,如下所示:

jvm_binary(
  name = "server-binary",
  dependencies = [
    ":server-library",
    "static_files:make"
  ],
  main= "Main",
)

我可以像这样向服务器添加命令行参数:

./pants run server:server-binary --jvm-run-jvm-program-args='-port:9000'

但我希望必须有一些参数成为目标的一部分,这样我就不必在每次调用裤子时都在命令行上指定参数。

理想情况下,我可以输入如下内容:

jvm_binary(
  name = "server-binary",
  dependencies = [
    ":server-library",
    "static_files:make"
  ],
  main= "Main",
  args = {
     "--jvm-run-jvm-program-args": "-port:9000"
  }
)

有办法吗?

您可以使用 jvm_prep_command() 取决于您的 jvm_library() 目标:

这是我们的回购协议中的一个示例:

jvm_prep_command(name='migrate',
  goal='run',
  mainclass='com.squareup.dbmigrate.tools.Migrator',
  args=[
    '--url="jdbc:mysql://localhost/sms_development"',
    '--type="sql:mysql"',
    '--username="root"',
    '--password=""',
    '--migrations-dir="sms/src/main/resources/sql/sms/migrations"',
  ],
  dependencies=[
    'dbmigrate:lib'
  ],
)

运行 这与 ./pants run sms:migrate