#maven #makefile
#maven #makefile
Вопрос:
Пожалуйста, небольшой вопрос относительно Makefile. В настоящее время мы используем Makefile для выполнения команд. (Многие из них). Одна конкретная команда, которая является сборкой java Maven, завершается с ошибкой.
Вот фрагмент Makefile:
.PHONY: help
.DEFAULT_GOAL := help
help: ## This help.
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-] :.*?## / {printf "33[36m%-30s33[0m %sn", $$1, $$2}' $(MAKEFILE_LIST)
build:
mvn clean install -U -Pintegration -Dspringdoc.writer-with-default-pretty-printer=true javadoc:javadoc checkstyle:checkstyle spotbugs:spotbugs pmd:pmd pmd:cpd org.pitest:pitest-maven:mutationCoverage jacoco:prepare-agent jacoco:report dependency:tree sonar:sonar
Чтобы подчеркнуть, make build
здесь ничего не делается:
make build
make: Nothing to be done for `build'.
В среде IDE я вижу ошибку:
$, <conditional>, <directive>, EOL, 't' or macro expected, got ':'
Чтобы также добавить информацию, это работает:
.PHONY: help
.DEFAULT_GOAL := help
help: ## This help.
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-] :.*?## / {printf "33[36m%-30s33[0m %sn", $$1, $$2}' $(MAKEFILE_LIST)
clean: ## mvn clean
mvn clean;
Вызов make clean
фактически будет очищен. make help также работает.
Но не работает для этого правила:
build:
mvn clean install -U -Pintegration -Dspringdoc.writer-with-default-pretty-printer=true javadoc:javadoc checkstyle:checkstyle spotbugs:spotbugs pmd:pmd pmd:cpd org.pitest:pitest-maven:mutationCoverage jacoco:prepare-agent jacoco:report dependency:tree sonar:sonar
Я не понимаю, что это значит.
Могу я спросить, как это исправить, пожалуйста?
Для подтверждения, точно такая же команда maven, выполняемая с терминала, работает отлично.
Спасибо за вашу помощь.
Комментарии:
1. Удалите
@
из команды и посмотрите, чтоmake
на самом деле передается в качестве командной строкиawk
.2. Какая команда не выполняется? сделать справку? сделать сборку?
3. Makefile в порядке. Ваша «IDE» запутывается.
4. правило, которое не запускается, — это make build . Я обновил вопрос, чтобы подтвердить детали
5. Ваш вопрос очень запутанный. Сначала вы, кажется, говорите, что команды работают нормально, но ваша среда разработки жалуется. Это проблема с вашей IDE, которую вы здесь не называете, поэтому вам следует проверить систему справки / поддержки вашей IDE и / или задать здесь информацию о том, какую IDE вы используете, и добавить соответствующие теги; похоже, это не вопрос make или makefile. Затем вы предполагаете, что
make build
это «не работает», Но вы не предоставляете никаких сообщений об ошибках, выходных данных и т. Д. Поэтому мы никак не можем помочь вам решить эту проблему.
Ответ №1:
Используйте функцию Make «call».
define buildfn
mvn clean install -U -Pintegration -Dspringdoc.writer-with-default-pretty-printer=true javadoc:javadoc checkstyle:checkstyle spotbugs:spotbugs pmd:pmd pmd:cpd org.pitest:pitest-maven:mutationCoverage jacoco:prepare-agent jacoco:report dependency:tree sonar:sonar
endef
Затем запустите его следующим образом:
build:
$(call buildfn)
Вот справочная документация: функция вызова
Комментарии:
1. Это действительно правильно, спасибо @luqo33, узнал что-то новое с makefile