5

我正在尝试maven install在 pom 上执行,显示的结果是:

坟墓:SEC5054:证书已过期

此结果在测试执行开始后出现。我一直在搜索这个问题,但我只找到了与真正的 glassfish 应用程序服务器相关的解决方案。他们建议从它们所在的文件夹中删除有问题的证书等等(我见过的页面大多是这样的)或“解压”嵌入 glassfish 以删除证书,然后再将其 jar 。

请注意,我正在执行一个maven install,而不是应用程序服务器上的实际部署。这就是为什么我不能接受许多博客上的建议

pom 包含以下依赖项:

 <dependencies>
<dependency>
  <groupId>org.glassfish.main.extras</groupId>
  <artifactId>glassfish-embedded-all</artifactId>
  <version>3.1.2.2</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
  <scope>test</scope>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.jboss.arquillian.junit</groupId>
  <artifactId>arquillian-junit-container</artifactId>
  <version>1.0.0.Final</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.jboss.arquillian.container</groupId>
  <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
  <version>1.0.0.CR3</version>
  <scope>test</scope>
</dependency>

4

3 回答 3

1

你可以试试这个:

  1. 创建自定义domain.xml
  2. 更改<jvm-options>-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks</jvm-options><jvm-options>-Djavax.net.ssl.trustStore=insertpathtocacert/cacerts.jks</jvm-options>
  3. arquillian.xml将设置配置configurationXml为以下路径domain.xmlhttps ://docs.jboss.org/author/display/ARQ/GlassFish+3.1+-+Embedded

或者这个:Arquillian Embedded Glassfish 证书已过期

于 2013-10-21T21:54:47.717 回答
1

这是一个已知问题,至少从 Glassfish 3.0.1 开始,并且仍然报告为 Glassfish 3.1.2 中的未解决问题。Oracle 提供了一些变通方法——这些都不适用于您的情况。但他们也说:

如果实例未以这种方式配置,请忽略该警告。实例的功能不受影响。

因此,即使这是对 SO 问题的蹩脚答案:不要为您的测试用例而烦恼。(就我个人而言,我花了很多时间试图解决这个问题。)新版本的 Glassfish 会为我们解决这个问题,或者不会。让我们停止打扰。

更新:

如果您遇到导致构建失败的问题,以下 pom 对我有用,而没有失败的构建:

<!--snip-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>1.0.3.Final</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.glassfish.main.extras</groupId>
        <artifactId>glassfish-embedded-all</artifactId>
        <version>3.1.2</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
        <version>1.0.0.CR4</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <version>1.1.1.Final</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derbyclient</artifactId>
        <version>10.7.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>
于 2013-10-25T12:33:30.073 回答
1

我假设测试阶段启动了负责错误的嵌入式 glassfish 服务器。安装阶段在测试阶段之后。如果要执行任何测试用例,您必须解压缩并删除冲突的证书(在 .m2 文件夹中)。否则,您可以使用标志 -DskipTests=true 绕过测试阶段。

于 2013-10-25T05:17:38.367 回答