Как запустить только один (текущий) файл и игнорировать другие в проекте IntelliJ Gradle? - PullRequest
0 голосов
/ 24 марта 2020

Это должно быть очень простым заданием для многих из вас. Позвольте мне объяснить сценарий.

Я недавно начал практиковать вопросы по HackerRank. Но я обнаружил, что платформа не так удобна для отладки. Ни одна онлайн-платформа не является или не может быть из-за своих собственных ограничений. HackerRank предоставляет код вопроса и заглушки для многих проблем на своей странице проблем.

Например, давайте рассмотрим, https://www.hackerrank.com/challenges/java-datatypes/problem

Но из-за это отладочные ограничения, я не могу наилучшим образом использовать портал. Поэтому я написал сценарий PHP для очистки всего содержимого веб-сайта и сгенерировал формулировки проблем в форматах HTML / PDF и решениях в формате java.

Вот проект GitHub для то же самое.

https://github.com/saint1729/hr-idea-integration

Основная цель этой деятельности - интеграция веб-сайта с IDE, такой как Intellij IDEA. Теперь все готово.

Я создал gradle проект с существующими источниками. Но проект содержит много java файлов (почти 500+ файлов, и каждый файл имеет свой собственный метод main). Мое намерение состоит в том, чтобы решить одну проблему за один раз и посмотреть, компилирует ли она и отправляет ли ее, используя REST API, предоставленный HackerRank.

Но, когда я пытаюсь Right Click и Click на Solution.main() для каждого файла он пытается скомпилировать все файлы в проекте, и, поскольку в проекте есть некоторые проблемы с компиляцией, я не могу проверить свой код для текущего файла. Это не продуктивно для меня.

Пожалуйста, дайте мне знать, если возможно скомпилировать и запустить один файл в IDEA (без компиляции всего проекта). Если идея создания gradle проекта для этого действия не нужна, может кто-нибудь порекомендовать мне другое эффективное решение?

ПРИМЕЧАНИЕ. Каждый извлеченный файл java содержит свой собственный метод main. Я знаю, что проект может содержать только 1 main метод. Но я не знаю связного решения для решения моей проблемы.

1 Ответ

1 голос
/ 27 марта 2020

Если вы хотите продолжить использовать gradle, вы создаете модуль для каждого решения.

Предположим, у вас есть 3 решения. canyouaccess, duplicateword и java1darray.

Итак, ваш репозиторий выглядит так:

java
   canyouaccess
      src/main/java
          package
             Solution.java
   duplicateword
      src/main/java
          package
             Solution.java
   java1darray
      src/main/java
          package
             Solution.java
build.gradle
settings.gradle

Каждый модуль может иметь свой собственный основной. Внутри файла settings.gradle модули можно определить или отключить, закомментировав его.

Ваш build.gradle выглядит следующим образом:

...
subprojects { project -> 
    apply plugin: "java"
    sourceCompatibility = 11
}
...

Для settings.gradle выглядит так:

include 'java:canyouaccees'
include 'java:dublicateword'
include 'java:java1darray'

Каждый модуль может быть собран отдельно, вы даже можете сгруппировать модули, создав структуру подмодуля.

И каждый модуль может иметь свою собственную конфигурацию отладки, где модуль и основной выбран. Если вы установите их как shared, они будут сохранены в формате xml в .idea/runConfigurations. Таким образом, ваш сценарий может также создавать их.

Каждый модуль нуждается в своем собственном файле gradle.build, в котором объявлен основной класс.

jar {
   manifest {
     attributes('Main-Class': 'your.main.class.goes.here')
   }
}

Что-то подобное должно делать.

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