Статьи

Сделайте снимки GlassFish 4.0 сами

Этот пост посвящен созданию моментальных снимков 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
 
 
  <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>
          <url>http://repo1.maven.org/maven2/</url>
          <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 Питера Пилигрима в блоге Питера Пилигрима .