Этот пост посвящен созданию моментальных снимков GlassFish 4.0 и включает в себя хаки. Я нашел официальную инструкцию для FullBuild от GlassFish, а затем решил сам собрать сервер. Иногда вам может не потребоваться дождаться, пока группа соберет файлы сборки GlassFish. В этой записи я упоминаю Artifactory как частный репозиторий Maven, конечно, вы можете использовать и что-то еще. Проверьте исходный код для GlassFish 4.0 самостоятельно из Subversion:
1
|
svn checkout https: //svn .java.net /svn/glassfish ~svn /trunk/main glassfish-main |
Вам нужно взломать файл настроек Maven для вашей рабочей станции, чтобы исключить артефакты Eclipse. Вот пример файла settings.xml
, который я настроил.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 <!--Maven http://maven.apache.org/settings.html --> < localRepository /> < interactiveMode /> < usePluginRegistry /> < offline /> < pluginGroups /> < servers > < server > < id >ACME-ARTIFACTORY-PRIVATE</ id > < username >administrator</ username > < password >password</ password > </ server > </ servers > < mirrors > < mirror > < id >maven-central</ id > < mirrorOf >central,!eclipselink.repository</ mirrorOf > </ mirror > </ mirrors > < proxies /> < profiles /> < activeProfiles /> </ settings > |
Прежде чем мы сможем скомпилировать весь код GlassFish, нам нужно взломать POM-файлы, чтобы они устанавливали артефакты на наш частный сервер Artifactory вместо Maven Central. Добавьте следующий раздел в файлы POM в дистрибутиве:
01
02
03
04
05
06
07
08
09
10
11
12
|
<distributionManagement> <repository> < id >ACME-ARTIFACTORY-PRIVATE< /id > <name>acme-releases< /name > <url>http: //peabody .internal.acme.com /artifactory/ACME-ARTIFACTORY-PRIVATE < /url > < /repository > <snapshotRepository> < id >ACME-ARTIFACTORY-PRIVATE< /id > <name>acme-snapshots< /name > <url>http: //peabody .internal.acme.com /artifactory/ACME-ARTIFACTORY-PRIVATE < /url > < /snapshotRepository > < /distributionManagement > |
В приведенном выше разделе измените определения из ACME на сервере Artifactory, которым вы владеете в частном порядке, а затем скопируйте следующие файлы POM:
-
main/pom.xml
-
main/appserver/javaee-api/pom.xml
-
main/appserver/pom.xml
-
main/nuclues/pom.xml
Это неприятный хак, потому что мне не нравится, что вы не можете настроить изменение сервера развертывания и учетных данных из конфигурации. Другой исходный код позволяет настроить сервер развертывания с помощью профилей Maven или даже файлов свойств. Убедитесь, что настройки Maven правильны для развертывания Artifactory, а также мы настроили процесс сборки Maven. Установите переменную окружения MAVEN_OPTS так, чтобы в Maven было достаточно памяти, а постоянная генерация была достаточно высокой, чтобы избежать исключений нехватки памяти во время компиляции.
1
|
MAVEN_OPTS=-Xmx1024m -Xms256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled |
Если у вас есть 16 ГБ ОЗУ, почему бы не использовать ее полностью для компиляции всего GlassFish? Алгоритм сбора мусора изменен на параллельный алгоритм метки и очистки, и мы также включили разрешенную выгрузку классов. Вы готовы к компиляции, введя следующие команды:
1
2
3
4
|
cd glassfish-main svn update mvn clean mvn install -DskipTests= true |
Приготовьте себе горячий напиток и перекусите около 20 минут на приличном процессоре Intel Core i5 / i7 (2012). Перерыв. Обратите внимание, что мы избегаем здесь запускать модульные тесты, мы пропускаем тесты, потому что мы просто хотим быстро получить рабочий релиз в репо, что не означает, что тестирование плохое. После успешной компиляции всех модулей, теперь вы готовы к развертыванию в частном репозитории Maven. Если вы выполнили предыдущую инструкцию о копировании раздела в отдельные файлы POM, вы можете выполнить эту команду из root.
1
2
|
cd glassfish-main mvn deploy -DskipTests= true |
После развертывания артефактов в Artifactory проверьте хранилище на наличие моментального снимка версии 4.0, все они должны быть там. Теперь перейдите в папку проекта Java EE. glassfish-main/appserver/javaee-api/javax.javaee-api/pom.xml
POM-файл: glassfish-main/appserver/javaee-api/javax.javaee-api/pom.xml
. В разделе сборки отсутствует исходный плагин maven, и поэтому по умолчанию он не создает JAR-файл источника, что полезно для просмотра новых API JavaEE 7! Найдите project/build/plugins
XPath project/build/plugins
и добавьте следующий раздел к этому POM.
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<plugin> <groupId>org.apache.maven.plugins< /groupId > <artifactId>maven- source -plugin< /artifactId > <executions> <execution> < id >attach-sources< /id > <phase>package< /phase > <goals> <goal>jar-no-fork< /goal > < /goals > < /execution > < /executions > < /plugin > |
Выполните следующую командную строку, чтобы развернуть артефакты API Java EE
1
2
|
cd glassfish-main /appserver/javaee mvn deploy -DskipTests= true |
По какой-то причине основное выполнение не устанавливает артефакты javax.javaee-api
автоматически. Выполнение этой строки создает JAR и JAR SOURCES для трех базовых модулей: javax.javaee-api
, javax.javaee-web-api
и javax.javaee-endorsed-api
. Зайдите в Артефактуру и увидите, что все артефакты развернуты. Затем вы можете написать файл сборки Gradle следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
repositories { maven { credentials { username 'administrator' password 'passowrd' } } maven { } maven { } } dependencies { providedCompile 'org.glassfish.main.extras:glassfish-embedded-all:4.0-SNAPSHOT' providedCompile 'javax:javaee-api:7.0-bpeter-private' providedCompile 'javax:javaee-web-api:7.0-bpeter-private' compile 'org.glassfish.main.extras:glassfish-embedded-all:4.0-SNAPSHOT' compile 'javax:javaee-api:7.0-bpeter-private' testCompile 'junit:junit:4.10' } |
Особенно обратите внимание, что версия сборки 7.0-bpeter-private
как 7.0-bpeter-private
. Последний фрагмент головоломки, который я еще не разработал, — это настройка build.id
Maven build.id
чтобы я мог настроить номер сборки. Это все еще загадка. Если вам случится знать ответ, пожалуйста, позвоните мне. Ура!
Ссылка: Создайте снимки GlassFish 4.0 от нашего партнера JCG Питера Пилигрима в блоге Питера Пилигрима .