我正在尝试从pom文件中获取该版本,以便稍后可以在另一个命令中使用它。所以在我的docker文件中,
RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')"
RUN echo $VERSION
但回声没有打印出来。我真正想要的是,
RUN mv /abc/abc-${VERSION}.jar /abc/abc.jar
答案 0 :(得分:2)
像这样使用ENV
,这就是Docker开发人员希望你这样做的方式:
ENV VERSION "$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')"
RUN echo $VERSION
有一个例子是与您的案例非常相似的文档:https://docs.docker.com/engine/reference/builder/#environment-replacement
答案 1 :(得分:1)
如果你将2行合并为一行,它将起作用
RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" ; echo $VERSION
推荐的方式当然是Ilya Peterov提出的解决方案,我怀疑你以后想在Dockerfile中使用它
如果您在abc / myscript.sh
中有脚本,我将再举一个例子 RUN cd abc ; ./myscript
会起作用
RUN cd abc
RUN ./myscript
将失败,因为它不在abc目录中