我正在尝试使用 Apache Commons Exec 来运行使用正则表达式的 git 命令。
当我形成CommandLine并打印出来时,它看起来像这样:
[git, --no-pager, grep, --line-number, --untracked, --extended-regexp, "^\s*public void\s+(testFindByAdAccount).*", --, *Test.java]
Run Code Online (Sandbox Code Playgroud)
但是,当我执行此操作时,git 没有返回任何结果,导致退出代码 1。
但是,当我手动运行此命令时,它会返回大量结果并成功。将参数更改--extended-regexp为字符串(如testFindByAdAccount通过 运行时)确实会产生结果Exec,因此我认为 Apache Commons 正在对 regexp 参数执行某些操作,使其无效。有什么想法吗?
编辑:添加可重现的示例
gradlew shadowJar为项目生成jar文件java -jar app/build/libs/app-all.jar$ java -jar app/build/libs/app-all.jar
HELLOOOOOO
WD::: null
[git, --no-pager, grep, --line-number, --untracked, --extended-regexp, "^\s*public void\s+(testAppHasAGreeting)\(\).*", --, *Test.java]
WD::: /Users/rgurney/Src/personal/min-example
Exception in thread "main" java.lang.RuntimeException: org.apache.commons.exec.ExecuteException: Process exited with an …Run Code Online (Sandbox Code Playgroud) 我是刚接触模块的人,并且正在将它们带入一个新项目中,我正在尝试按照此处描述的结构进行建模
这是我的目录结构的示例:
.
??? cmd
? ??? app_name
? ??? main.go
??? go.mod
??? go.sum
??? internal
? ??? bot
? ??? bot.go
??? pkg
??? website_name
? ??? client.go
? ??? client.options.go
? ??? server.go
? ??? server.options.go
??? lib
??? lib.go
Run Code Online (Sandbox Code Playgroud)
go build我得到“意外的模块路径“ github.com/ragurney/app_name/cmd/app_name””,但是当我运行时,go build ./...它可以工作。为什么?当我进入main.go顶层时,一切都会按预期进行。我是否应该不将/cmd模式与模块一起使用?
我是 elixir 的新手,正在尝试找出重写此 ruby 方法的正确方法:
def filter_events(events)
events.select { |event| event[:id].present? && event[:vhost].present? }
end
Run Code Online (Sandbox Code Playgroud)
在灵丹妙药。这是我到目前为止:
def filter_events(events) do
Enum.filter(events, &(Map.has_key?(&1, :id) && Map.has_key?(&1, :vhost)))
end
Run Code Online (Sandbox Code Playgroud)
有没有更好/更惯用的方法来做到这一点?