Задать вопрос
@pfemidi
Тут могло бы быть краткое описание меня

Можно ли в одном проекте создать несколько выполняемых или jar файлов?

Создаю я в VSCode проект Java (если критично, то Maven). Он создаётся по-умолчанию для одного единственного проекта (блин, какой-то каламбур получается, "проект для проекта", но не суть). А можно ли в него добавить ещё один, два, три или более проектов? Ну по типу Большой Вижуал Студии, в которой создаётся общий Solution, а после в этот солюшн можно хоть стопицот проектов напихать чтобы затем выбрав "Build" на каждом отдельном проекте собрать конкретныйт проект, или же на общем для всех солюшне затем выбрать "Build solution" и соберутся все проекты из этого Solution? Интересует именно для Java (если для Java в Visual Studio Code такое возможно, то для других языков наверное по аналогии можно сделать).

Да, плагин vscode-solution-explorer это не то, его советовать не надо.
  • Вопрос задан
  • 608 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 2
xez
@xez Куратор тега Java
TL Junior Roo
Можно.
Это называется модули maven.
Ответ написан
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Значит смотри. Что такое несколько выполняемых файлов. Это просто несколько jar-файлов в которых просто есть нужный манифест. Я достигал это с помощью профилей и с помощью Makefile который уже автоматизировал сборку проекта. Вот пример проекта с двумя main артифактами. Приведу только ключевые фрагменты которые есть суть.

pom.xml
<profiles>
    <profile>
      <id>java</id>
      <properties>
        <main.class.name>org.example.JavaTemplate</main.class.name>
        <jar.name>java-template</jar.name>
      </properties>
    </profile>
    <profile>
      <id>java-kafka-producer</id>
      <properties>
        <main.class.name>org.example.kafka.JavaKafkaProducerTemplate</main.class.name>
        <jar.name>java-kafka-producer-template</jar.name>
      </properties>
    </profile>
   ....
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <Main-Class>${main.class.name}</Main-Class>
            </manifest>
          </archive>
          <finalName>${jar.name}</finalName>
        </configuration>
      </plugin>

Makefile
java-kafka-producer-template: build
	mvn package -DskipTests -Pjava-kafka-producer
	cp -f target/java-kafka-producer-template.jar ./bin/

build: clean
	mvn install dependency:copy-dependencies
	cp -f target/dependency/* ./bin/
	rsync src/main/resources/shell/* ./bin

clean:
	rm -fr bin/*
	mkdir -p bin/
...


Сразу скажу что я не искал коробочного решения в виде готового gradle/maven плагина. Я просто скриптовал последовательность действий для нескольких сборок. Фактически я делал несколько компилляций проекта с разными параметрами. Я думаю что я достиг своей цели не заморачиваясь java-перфекционизмом или зависимостью от IDE.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Да, можно. Делаете сколько нужно классов с методом main, свой jar подключаете библиотекой -cp, классы указываете по имени.
Если же хотите, чтобы вызывался именно как -jar, то в манифесте можно указать только один main-класс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы