2015-12-18 6 views
0

Мне нужна помощь, включая Gradle в уже существующем проекте.Gradle on IntelliJ Структура папок

Основная проблема заключается в том, что структура проекта не является структурой «По умолчанию». У меня также есть три проекта в проекте Idea Project, что усложняет его.

Моих проектов:

  • Client
  • Сервера
  • Общий (как общий код между клиентом и сервером)

Это моя структура папок:

  • MyApplication
    • ЦСИ
      • ком
        • Elmac
          • клиент
          • сервер
          • совместно

Так я получаю хорошие пакеты URL стиля для моих классов. (т.е. com.elmac.client.Main)

Мой конкретный вопрос

Где я должен поставить, который Gradle файлы, и что я должен написать в файлах, для того, чтобы создать два .JAR-файла (клиент и сервер зависят от общих -> Shared не нужен файл jar).

Я очень смутился с десятками учебников, каждый из которых содержит похожие структуры, которые не похожи на мои. И я не понял, как включить свои проекты (я даже не знаю, где разместить этот файл в этой структуре проекта!)

ответ

1

Я не понимаю ваши рассуждения «Поэтому я получаю хорошие пакеты стиля URL для своих классов». Вы получите это, даже если вы разделите их на подпроекты и используйте более стандартную структуру каталогов. Затем вы можете иметь как подпроект клиента, так и сервер в зависимости от общего подпроекта (либо как банки, либо напрямую, как и для зависимости проекта).

Однако, чтобы ответить на ваш вопрос, вы можете начать с определения различных наборов исходных в build.gradle:

sourceSets { 
    client { 
     java { 
      srcDirs = ["$projectDir/src"] 
      include '**/client/**' 
     } 
... 
} 

Затем они будут собраны в отдельные каталоги в сборки директории.После этого вы можете создавать свои банки из этих наборов источников:

task clientJar(type: Jar) { 
    from sourceSets.client.output 
} 

Вы можете столкнуться с проблемами с IntelliJ, поскольку он может иметь только один выходной каталог для основной и один для испытаний в каждом модуле, так что вы не можете использовать IntelliJ скомпилировать & (например, при выполнении одиночных тестов), вам придется запускать все, используя задачи градации.

+0

Я пришел из затмения, где у вас могут быть настоящие подпроекты, как в разных исходных папках. Как я мог получить пакеты URL-Style, не помещая все папки для этого? Я не знаю, что такое стандартная структура каталогов. Спасибо за ваш ответ, я попробую прямо сейчас! –

+0

Как я могу сделать зависимость клиента и сервера с общим подпроектом (лучше всего будет зависеть от проекта)? Я получаю ошибки, потому что мой клиент и сервер не находят код общего доступа. Он содержит только полезную утилиту, поэтому он «не выводит вывод свойства на исходный набор совместно». –

+0

У вас могут быть зависимости между наборами источников, но я действительно думаю, что вы пытаетесь изобрести колесо. Все еще не получают «пакеты с URL-стилем» – sm4