自己构建GlassFish 4.0快照
這篇文章是關于自己發布GlassFish 4.0快照的,其中包括一些黑客。 我找到了GlassFish FullBuild的官方說明,然后決定自己構建服務器。 有時,您可能不想等待團隊升級GlassFish構建文件。 在本條目中,我將Artifactory稱為私有Maven存儲庫,當然,您也可以使用其他東西。 從Subversion自己簽出GlassFish 4.0的源代碼:
您需要修改工作站的Maven設置文件以排除Eclipse工件。這是我配置的settings.xml的示例。
<settings xmlns='http://maven.apache.org/SETTINGS/1.0.0'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd'><!--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><url>http://repo1.maven.org/maven2/</url><mirrorOf>central,!eclipselink.repository</mirrorOf></mirror></mirrors><proxies/><profiles/><activeProfiles/> </settings>在編譯整個GlassFish代碼之前,我們需要破解POM文件,以便它們將工件安裝到我們的專用Artifactory服務器中,而不是Maven Central中。 將以下節添加到分發中的POM文件中:
<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有足夠的內存,并且永久生成足夠高,以避免編譯期間出現內存不足異常。
MAVEN_OPTS=-Xmx1024m -Xms256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled如果您有16GB RAM工作站,為什么不將其最大化以編譯整個GlassFish? 垃圾收集算法更改為并發標記和清除算法,并且我們還將啟用的類卸載設置為啟用。 您準備好進行編譯,輸入以下命令:
cd glassfish-main svn update mvn clean mvn install -DskipTests=true在像樣的Intel Core i5 / i7機器(2012)上,讓自己成為大約20分鐘的熱飲料和小吃。 休息一下。 請注意,我們在這里避免運行單元測試,而跳過了測試,因為我們只想快速地在倉庫中發布工作版本,但這并不是說測試很糟糕。 成功編譯所有模塊之后,現在您可以部署到私有Maven存儲庫。 如果遵循先前的說明(關于將節復制到單個POM文件),則可以從根目錄執行此命令。
cd glassfish-main mvn deploy -DskipTests=true將工件部署到Artifactory之后,檢查快照4.0版本的存儲庫,它們都應該存在。 現在下降到Java EE項目文件夾。 破解POM文件glassfish-main/appserver/javaee-api/javax.javaee-api/pom.xml 。 它在build部分中缺少maven源插件,因此,默認情況下,它不會生成源JAR,這對于查看新的JavaEE 7 API很有用! 查找XPath project/build/plugins然后將以下節附加到該POM。
<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>執行以下命令行,以部署Java EE api工件
cd glassfish-main/appserver/javaee mvn deploy -DskipTests=true由于某種原因,主要執行不會自動安裝javax.javaee-api工件。 執行此行將為三個基礎模塊生成JAR和SOURCES JAR: javax.javaee-api , javax.javaee-web-api和javax.javaee-endorsed-api 。 轉至Artifactory,查看工件已全部部署。 然后,您可以像這樣編寫Gradle構建文件:
repositories {maven {credentials {username 'administrator'password 'passowrd'}url 'http://peabody.internal.acme.com/artifactory/ACME-ARTIFACTORY-PRIVATE'}maven {url 'https://maven.java.net/content/groups/promoted'}maven {url 'http://repository.jboss.org/nexus/content/groups/public'} }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 。 我尚未解決的難題的最后一部分是如何配置build.id Maven屬性,以便我可以自定義內部版本號。 仍然是一個謎。 如果您碰巧知道答案,請給我響鈴。 干杯!
參考:在Peter Pilgrim的博客博客中,我們的JCG合作伙伴 Peter Pilgrim 自己構建了GlassFish 4.0快照 。
翻譯自: https://www.javacodegeeks.com/2013/03/build-glassfish-4-0-snapshots-yourself.html
總結
以上是生活随笔為你收集整理的自己构建GlassFish 4.0快照的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子信息备案表在哪里查(电子信息备案表)
- 下一篇: 先进的ListenableFuture功