Могу ли я запустить Maven артефакт из докера - PullRequest
0 голосов
/ 08 ноября 2018

Моя цель - установить Dockerfile с помощью maven: latest, чтобы иметь возможность запускать мой код JavaScript с последней сборкой org.mozilla.rhino

FROM maven:latest
RUN [ "mvn", "dependency:get", "-Dartifact=org.mozilla:rhino:LATEST:jar" ]
RUN [ "mvn", "exec:java" "-Dexec.mainClass='org.mozilla.javascript.tools.shell.Main'" "-Dexec.args='src/index.js'"]

мне нужен pom.xml, чтобы сделать это, и если я делаю что должен содержать мой pom.xml, поскольку в моем проекте есть только файлы javascript?

PS: у меня нет опыта работы с maven

1 Ответ

0 голосов
/ 10 ноября 2018

Ну, как вы и надеялись, вам не нужен pom.xml для вашего проекта. Я не знаю, нужно ли вам это, чтобы быть полностью переносимым, но вот что я смоделировал на основе maven:latest. Это достигается тем, что загружаемый файл jar-файла rhino содержит файл MANIFEST.MF, который сообщает команде java, как ее выполнить.

содержимое rhino-1.7.10.jar: /META-INF/MANIFEST.MF

Manifest-Version: 1.0
Main-Class: org.mozilla.javascript.tools.shell.Main
Implementation-Version: 1.7.10
Implementation-Title: Mozilla Rhino
Implementation-Vendor: Mozilla Foundation
Implementation-URL: http://www.mozilla.org/rhino
Built-Date: 2018-04-09
Built-Time: 20:03:34

Итак:

index.js

print("Hello world");

командная строка

$ mvn dependency:get -Dartifact=org.mozilla:rhino:LATEST:jar # as you have currently
... # maven output snipped
$ find .m2 -name rhino*.jar -exec java -jar {} index.js \;
Hello world!

Dockerfile (не проверено)

FROM maven:latest
# Missing here is you copying your javascript into the image
RUN [ "mvn", "dependency:get", "-Dartifact=org.mozilla:rhino:LATEST:jar" ]
RUN [ "find", "/root/.m2", "-name", "rhino*.jar", "-exec", "java", "-jar", "{}", "src/index.js", "\;" ]

Edit:

Следует также отметить, что пользовательский подкаталог .m2 содержит репозиторий, в котором хранятся все артефакты, которые загружает maven. Dockerfile maven:latest, кажется, устанавливает это в /root/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...