小编Woj*_*tek的帖子

重新标记多架构 docker 镜像

我正在寻找一种以不同名称重新标记现有图像的方法(例如,我们发布版本 xyz,我们latests也想标记 is)。目前我会这样做:

docker pull docker/my-app:123
docker tag docker/my-app:123 docker/my-app:latest
docker push docker/my-app:latest
Run Code Online (Sandbox Code Playgroud)

它适用于常规图像,但它会破坏多架构图像,并且仅标记/推送我当前计算机的架构。我知道我可以latest向 buildx 添加标签(它允许多个--tag参数),但我们也有这样的情况:我们有nightly构建,并且为了(测试)部署目的,我们用更多静态标签(大多数时候带有日期)来标记它们,并在这种情况下buildx多标签方法会中断。

(我知道有几个类似的问题,但它们是关于标记图像并推送到不同的存储库,并且经常建议使用 github.com/regclient/regclient 作为解决方案)

docker multiarch

13
推荐指数
1
解决办法
3056
查看次数

将exec-maven-plugin的输出分配给变量

我想使用exec-maven-plugin来获取git'revision',所以我使用以下配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <id>gitVersion</id>
            <phase>validate</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>git</executable>
        <workingDirectory>./</workingDirectory>
        <arguments>
            <argument>rev-list</argument>
            <argument>master</argument>
            <argument>--count</argument>
        </arguments>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但我遇到了一个问题 - 如何将输出分配给其他插件/ livecycles中的任何变量?

(我能够使用gmaven-plugin和执行groovy脚本完成它,但我发现它有点矫枉过正/不那么优雅)

编辑:供参考,groovy工作解决方案:

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <providerSelection>2.0</providerSelection>
                <properties>
                    <script>git rev-list master --count</script>
                </properties>
                <source>
                    def command = project.properties.script
                    def process = command.execute()
                    process.waitFor()

                    def describe = process.in.text.trim()
                    println "setting revision to: " + describe

                    project.properties.setProperty('gitVersion',describe)
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

maven exec-maven-plugin

8
推荐指数
1
解决办法
1749
查看次数

在没有模块的情况下访问 JDK 11 中的“sun.security.x509”?

(tl,dr 最后) 我们有一个生成自签名 SSL 证书的小方法,它显然依赖于sun.security.x509. 目前我们仍在使用 JDK8 构建它,因此,即使代码库的其余部分(它只是一个小的、单一的库)是使用 JDK11 构建并使用 JVM11 运行的。

不幸的是,主 JDK 中没有替换,按照(并且CertificateFactory几乎没有生成证书,与 javadoc 声明的相反......):

一种选择是使用 BouncyCastle,但这是我们真正不需要的额外 4MB,特别是对于这么小的任务,所以我正在考虑访问它的方法

从我所看到的,包和所需的类仍然是包,相关的类仍然存在(参见sun.security.x509github但在构建它时(使用 maven)我得到错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project: Compilation failure: Compilation failure:
[ERROR] OldSelfSignedCertificateGenerator.java:[20,25] package sun.security.x509 does not exist
[ERROR] OldSelfSignedCertificateGenerator.java:[71,45] cannot find symbol
[ERROR]   symbol:   class X509CertInfo
[ERROR]   location: class OldSelfSignedCertificateGenerator
Run Code Online (Sandbox Code Playgroud)

我正在搜索并添加:

<arg>--add-exports</arg><arg>java.base/sun.security.x509=ALL-UNNAMED</arg>
Run Code Online (Sandbox Code Playgroud)

maven-compiler-plugin它有点工作 - 我只是WARNING不知道sun.security.x509包:

[WARNING] OldSelfSignedCertificateGenerator.java:[20,25] sun.security.x509.AlgorithmId is internal …
Run Code Online (Sandbox Code Playgroud)

java ssl maven java-11

8
推荐指数
1
解决办法
2896
查看次数

将 git 子模块合并到主存储库中

好的,我们有一个包含 3 个子模块的存储库。现在我们想将此子模块合并回主存储库,保留所有历史记录(好吧,使用子模块比有用更令人头疼)。我们该如何进行?

git git-submodules

7
推荐指数
1
解决办法
3985
查看次数

如何使用 JDK17 在 Java 中生成自签名证书

TL,博士;是否有本地 Java17 解决方案来生成自签名证书,无论是通过标准库(不太可能)还是通过一些轻量级库?

还有一个类似的问题(我问过Access `sun.security.x509` in JDK 11 without module?),因为从 JDK11 开始,对内部 JDK 包的访问受到限制,因此无法使用sun.security.x509. 直到 JDK17 为止,都可以通过某些编译器配置来标记打开这些包来规避它。JDK17 改变了这一点,删除了该选项。

从我能够收集到的当前解决方案是:

  1. BouncyCastle - 但它是一个巨大的 5MB 瑞士刀安全库,因此仅使用它来生成证书似乎有些浪费。
  2. 直接调用keytooljava工具,但这有两个缺点:调用外部工具速度较慢,并且需要创建密钥库文件。

目前(2)在我的用例中似乎更方便,但我很想找到第三个选项 - 本机、轻量级解决方案。

编辑:有 OpenJDK 问题:JDK-8058778:用于创建证书和证书请求的新 API,我希望有一天它会被实现......

java certificate x509certificate java-17 openjdk-17

7
推荐指数
1
解决办法
2777
查看次数

Maven Surefire 环境变量无法在一台机器上运行

背景:我们将当前项目版本设置为系统环境:

\n\n
<plugin>\n    <groupId>org.apache.maven.plugins</groupId>\n    <artifactId>maven-surefire-plugin</artifactId>\n    <version>2.19.1</version>\n    <configuration>\n        <forkMode>always</forkMode>\n        <environmentVariables>\n            <project.target>${project.build.outputDirectory}</project.target>\n            <project.version>${project.version}</project.version>\n        </environmentVariables>\n    </configuration>\n</plugin>\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我们在测试中使用该值System.getenv("project.version");,这在除一台机器之外的所有机器\xe2\x80\xa6 上都运行良好。

\n\n

有问题的机器是带有 Ubuntu 16.04 LTS 的新 AWS EC2 实例。设置和配置看起来没问题。我检查了 OpenJDK 和 OracleJDK 的最新版本,我还检查了包含的 java 和 maven 版本:

\n\n
$ java -version\nopenjdk version "1.8.0_151"\nOpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)\nOpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)\n
Run Code Online (Sandbox Code Playgroud)\n\n

行家

\n\n
$ mvn -version\nApache Maven 3.3.9\nMaven home: /usr/share/maven\nJava version: 1.8.0_151, vendor: Oracle Corporation\nJava home: /usr/lib/jvm/java-8-openjdk-amd64/jre\nDefault locale: en_US, platform encoding: UTF-8\nOS name: "linux", version: "4.4.0-1049-aws", arch: "amd64", …
Run Code Online (Sandbox Code Playgroud)

java maven maven-surefire-plugin

6
推荐指数
1
解决办法
5252
查看次数

如何阻止谷歌随机化 xmpp 资源

在 XMPP(即 gtalk)中,我们可以将资源设置为我们想要的(指定机器/位置/等),这适用于所有/大多数服务器和客户端。但是在 google 的情况下,它并不完全按预期工作,因为每次用户连接 google 时,都会将随机字符串附加到用户设置的资源中。这尤其令人讨厌,因为许多客户端通过 jid 和资源部分来区分用户聊天,这会导致在重新连接(并生成新资源)后打开多个窗口/选项卡。

tl; dr - 有没有办法阻止谷歌将随机字符串附加到用户设置的资源中?

xmpp google-talk

5
推荐指数
1
解决办法
509
查看次数

Java 记录器 - 令牌的撇号问题

我有一些无法解释的行为java.util.logging。让我们来看看这两个样本:

第一的:

boolean var = false;
log.log( Level.WARNING, "Cant {0}", new Object[] { var } );
Run Code Online (Sandbox Code Playgroud)

输出:

Cant false
Run Code Online (Sandbox Code Playgroud)

第二:

boolean var = false;
log.log( Level.WARNING, "Can't {0}", new Object[] { var } );
Run Code Online (Sandbox Code Playgroud)

输出:

不能{0}

为什么包含撇号 ( ' ) 会导致记录器不扩展令牌?

java logging java.util.logging

4
推荐指数
1
解决办法
1525
查看次数

一段时间后 java.util.logging 停止工作

我有 java.util.logging 的问题。从一开始一切都很好,但过了一会儿,记录器只是停止将任何数据写入文件,我不知道为什么(没有例外,没有错误)也不知道如何找到这个问题的原因。

我试过谷歌,但没有发现任何类似的问题。

tl,博士; java.util.logging 停止工作,想知道为什么。

java logging java.util.logging

2
推荐指数
1
解决办法
1914
查看次数

Eclipse自动完成类似于Netbeans

可能重复:
在Eclipse中获得类似IntelliJ的自动完成的任何方法?

有没有办法以类似于NetBeans中的方式使Eclipse自动完成工作?我缺乏完成下一个公共部分(即键入"我",我得到建议消息,MessageArchive,MessageRouter所以'标签'将完成"消息")并自动建议"." (或"进入")当有后续可能性时.

微小的东西,但缺乏它们是非常令人沮丧的......

java eclipse ide netbeans

0
推荐指数
1
解决办法
2236
查看次数