Створення проектів Java EE з Maven


13

Я розробляв веб-додатки Java EE разом із Eclipse близько року. Мій роботодавець не використовує Maven, але чим більше я читаю про нього, тим більше переконуюсь, що Maven + Hudson буде нам дуже корисний. По-перше, я маю комфортно працювати з цими технологіями у вільний час, щоб я міг створити перевірку своєї концепції.

Зараз я все ще новачок Maven. Чи існує набір найкращих практик створення веб-додатків Java EE за допомогою Maven? Наприклад, я міг би створити проект з базовим архетипом, а потім додати всі необхідні JAR, додавши залежності в POM для контейнера сервлетів, EJB, EclipseLink тощо. Це може спрацювати, але це може бути не найкращим спосіб це зробити. Я дуже вдячний за будь-які вказівки, які ви могли б надати з цієї теми.

Відповіді:


10

Не турбуйтеся з архетипами до пізніше

Щоб отримати всю інформацію, яку вам потрібно знати про Мейвен, прочитайте деякі книги на своєму веб-сайті . Однак це трохи надмірності для того, що ви намагаєтесь досягти.

Для початку викладіть веб-додаток за стандартною структурою Maven для веб-додатків наступним чином. (Для цього вам не потрібен архетип Maven; це лише купа стандартних папок. Ви можете зробити це за 2 хвилини).

  • src/main/java - містить Ваш виробничий код Java
  • src/main/resources - містить ресурси виробничого класу (наприклад, Весняні контексти)
  • src/main/webapp - (містить WEB-INF / web.xml, але не папку lib)
  • src/test/java - містить ваш тестовий код Java
  • src/test/resources - містить ваші тестові ресурси (наприклад, XML-канали для тестування веб-служб тощо)

Основні плагіни

Наступним кроком є ​​вибір плагінів. Звичайні підозрювані - це, очевидно, ті, що підтримують чистоту, збирання та ресурси (приходять як частина Maven, але ви можете їх налаштувати). Тоді ви будете мати тестер надійної одиниці та плагін WAR. Цього достатньо, щоб створити дуже базовий веб-додаток.

Більш просунуті плагіни

Наступним кроком є ​​введення плагінів Findbugs та PMD, які дозволять ретельно переглядати ваш код та повідомляти про різні потенційні проблеми. Напевно, ви хочете мати JXR для перехресного посилання вихідного коду, тег для відстеження TODO та тегів REFACTOR тощо. Понад усе...

... Використовуйте плагін Jetty для веб-додатків

Використовуйте плагін Jetty для запуску файлу WAR у вашому IDE для легкої налагодження. Це швидко і мало, і робота швидко виконується. Якщо Jetty є частиною вашої збірки Maven, ваш проект може бути протестований на будь-якій машині, не потребуючи IDE з налаштованою складною панеллю серверів. Це також дозволяє оголосити залежності від інших файлів WAR, що, в свою чергу, означає, що ви можете створити повне робоче середовище, що складається з декількох веб-додатків, всією командою "mvn clean jetty: run". Це працює в будь-якому місці, і ви навіть можете надати тестову конфігурацію JNDI, щоб ваші джерела даних, введені Spring, були налаштовані зовні. Якщо ви поєднуєте цей підхід Jetty зі стандартною демонстраційною HTML-сторінкою (src/test/resources/demo.html) Ви заощадите уроки годин розробника, намагаючись отримати робоче місцеве середовище. Одна команда, і ви закінчили. Простий.

Налаштування IDE

З Maven це легко, оскільки всі великі хлопці підтримують це: Eclipse, Netbeans і, звичайно, мій особистий улюблений Intellij. Просто вкажіть свій IDE на pom.xml, і він подбає про зменшення всіх перелічених залежностей для вас. Більше не маніпулювати з WEB-INF/lib. У Eclipse типово використовуєш File | Імпорт ... | Проект Maven | пом.хмл.

Інтеграція з Хадсоном

Спершу встановіть Хадсон (це просто веб-версія), а потім націліть свою систему контролю версій, щоб вона перевірила відповідну версію. Ваш останній крок - налаштувати його так, щоб він використовував Maven для збирання. Очевидно, Maven доведеться встановити на вашій машині збирання (якщо припустити, що це відрізняється від вашої розробки).

Хадсон робить лише знімок

Дозвольте Хадсону виконувати зйомки знімків і залишати версії версій ручним процесом. Використання цього підходу означатиме, що розробники можуть ділитися кодом під час перегляду знімків (наприклад, 1.0.0-SNAPSHOT), і лише за умови передачі збірки він буде переданий у сховище команди. Як правило, Хадсон виконує "mvn clean розвернення", хоча включення мети "site" також може бути частиною вашого процесу, оскільки він створить невеликий веб-сайт проекту для кожної збірки. Команда розробників автоматично оновлює збір знімків до свого проекту через процес управління залежністю Maven.

Hudson пропонує безліч плагінів, які можуть підтримувати всілякі показники. Мій особистий фаворит - відстежувати кількість пройдених тестів за проект протягом часу. Приємно показати керівництву, що кількість тестів і покриття ваших одиниць постійно зростає.

Загальні вказівки щодо налаштування

Розбийте свої сховища принаймні на таку структуру:

  • команда-реліз - Усі ваші випущені виробничі артефакти йдуть сюди
  • team-snapshot - Усі ваші артефакти розвитку знімків переходять сюди
  • стороннє випуск - сюди йдуть усі ваші підтримувані сторонні бібліотеки (наприклад, Spring, Hibernate тощо)

Облікові записи розробників не повинні мати можливість записуватись у командні сховища, ані знімок, ані реліз. Це дозволить розробнику обійти Хадсона, якщо вони поспішають і швидко стануть нормою.

Переконайтеся, що ви завжди завантажуєте джерело, підписи javadocs і SHA для всіх своїх третіх сторін. Jarvana - чудовий дослідник сховищ для всіх тих, хто важко знайти заняття.

Подумайте про встановлення диспетчера сховищ, таких як Nexus або Artifactory, щоб забезпечити кращий контроль над вашим постійно зростаючим сховищем.


2
Сонар також досить приголомшливий і добре поєднується з Мейвен / Хадсон
Кевін

1
Абсолютно. Зараз, якщо я працюю над проектом Maven в команді, я б очікував, що місцевий Findbugs / PMD швидко усуне проблеми вбивці, то робота Sonar після побудови Дженкінса з розгортанням артефактів на Nexus або Artifactory. Це забезпечує просте розташування артефактів та забезпечує аналіз впливу ("де використовується") для цих артефактів у всій екосистемі проекту. У поєднанні з git, JIRA та Fisheye у вас є приголомшливий процес розробки.
Гері Роу

1
Gary, pdf посилання закінчилось
користувач1787812

1

Мейвен забезпечує безліч архетипів

mvn archetype:generate

надрукує список доступних.

Основна відмінність простих архетипів Java від архетипів J2EE полягає в тому, що будуть створені каталоги для jsp та зображень. Якщо ви запускаєте новий проект J2EE, подумайте про використання одного з них з самого початку.

У міру зростання вашого проекту ви можете додавати більше залежностей. Особисто я вважаю за краще починати з мінімального набору залежностей (наприклад, базовий архетип J2EE), а потім поступово додавати те, що мені потрібно.


0

Я це зробив, починаючи з базового архетипу і додаючи всі біти, і я впевнений, що це не дуже вдалий спосіб. Але я вважаю це незручно і в інший спосіб; вибрати те, що є хорошим архетипом, важко, якщо ви вже «глибоко розбираєтесь у секретах». Це все трохи надто схоже на чарівну долю (на відміну від розумної відкритої технічної інформації) на мій смак ...


І я думаю, що це гарне питання. Бажаю, щоб у мене була краща відповідь.
Стипендіати Доналу

Це дуже цінується, сер.
Майкл

0

Maven пропонує спосіб створення проектів із шаблонів, званих Archetypes . Ви використовуєте команду, mvn archetype:generateщоб вибрати інтерактивно . Ви також можете вказати його безпосередньо.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

Усі в одному рядку.


0

Я використовую Maven та Hudson останні три місяці. Це допомагає мені регулярно перевіряти стан здоров'я коду, виконуючи всі одиничні тести, формуючи звіт про тест. Ви можете спробувати це.
Ви також можете спробувати Spring Roo. Це інструмент RAD для створення весняного проекту J2EE на базі весни.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.