自己构建GlassFish 4.0快照

这篇文章是关于自己发布GlassFish 4.0快照的,其中包括一些黑客。 我找到了GlassFish FullBuild的官方说明,然后决定自己构建服务器。 有时,您可能不想等待团队升级GlassFish构建文件。 在本条目中,我将Artifactory称为私有Maven存储库,当然,您也可以使用其他东西。 从Subversion自己签出GlassFish 4.0的源代码:

svn checkout https://svn.java.net/svn/glassfish~svn/trunk/main glassfish-main

您需要修改工作站的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.0

http://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-apijavax.javaee-web-apijavax.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值