小编Thi*_*aku的帖子

无法在 Circleci orb 中使用环境变量

我正在尝试创建一个 Circleci 工作流程,该工作流程构建 java WAR 并将其上传到我的组织现有的 S3 工件存储桶存储库。首先,构建项目并将一些信息保存在文件中,并将 VERSION 放入 BASH_ENV 中:

export "VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $BASH_ENV
  if [ $CIRCLE_BRANCH = "master" ]; then
    ENVIRONMENT=production
  elif [ $CIRCLE_BRANCH = "develop" ]; then
     ENVIRONMENT=qa
  elif [ $CIRCLE_BRANCH = "release-1.0" ]; then
     ENVIRONMENT=staging
  else
     ENVIRONMENT=$CIRCLE_BRANCH
  fi

  echo "ENVIRONMENT=$ENVIRONMENT" >> project.info
  if [ -z "$ENVIRONMENT" ]; then
    echo No environment is set
  exit 1
    fi
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用官方 S3 orb 上传工件:

    steps:
      - attach_workspace:
          at: .
      - run: source project.info
      - …
Run Code Online (Sandbox Code Playgroud)

circleci-workflows circleci-2.0

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

Intellij中的Java Lambda:期望不为null,但lambda主体不是值兼容的

尝试使用流过滤集合,并尝试将以下lambda传递给filter()一个Set,它在标题中给出了一个神秘的错误:

unmatchedIncomingFields.stream().filter(s-> s.matches(fieldMatchPattern))
Run Code Online (Sandbox Code Playgroud)

同时,创建Predicate对象有效:

unmatchedIncomingFields.stream().filter(new Predicate<String>() {
    @Override
    public boolean test(String s) {
        return s.matches(fieldMatchPattern);
    }
});
Run Code Online (Sandbox Code Playgroud)

根据JLS,如果每个控制路径返回一个值,则lambda主体是"值兼容的".matches()总是被调用并且总是返回一个布尔值,所以我不明白问题是什么.

我也尝试了相同lambda的各种变体 - 有和没有括号和参数类型,并使用表达式和块返回体.

lambda java-8

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

将系统属性从 Gradle 传递到 Spring Boot

我想将某些安全敏感属性传递到我的 Spring Boot 应用程序中,我在开发过程中通过 Gradle、命令行和/或外部设置的系统属性启动该应用程序。我无法将这些写入 build.gradle 脚本或属性文件之类的内容中,因为它们将被提交到源代码管理中,然后将公开可用。

我找不到任何我找到的解决方案,使这些值可用于 Gradle 执行以使用 Gradle 2.4.4 工作的应用程序。

几个解决方案看起来像这样,其中系统属性在 bootRun 任务中设置:

bootRun {
    systemProperties System.properties
}
Run Code Online (Sandbox Code Playgroud)

这似乎完全覆盖了默认的 bootRun 任务并破坏了 Spring Boot 的自动主类检测。

在其他地方,有人建议:

bootRun {
    run {systemProperties System.properties}
}
Run Code Online (Sandbox Code Playgroud)

这不会覆盖正常配置,但在运行闭包中设置的属性在 bootRun 任务中不可用。

这一切都发生在我使用 Intellij 启动 Gradle 时。

如果我从命令行启动 Gradle 并尝试以属性方式传递,例如:

gradle -Dspring.email.password=123 bootRun
Run Code Online (Sandbox Code Playgroud)

无论配置如何,该属性都不会在任何地方设置。更改参数的顺序没有任何效果。

java spring gradle spring-boot

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

如何使用 Selenium 登录 Chrome?

我正在测试一个需要用户登录才能使用的 Chrome 扩展程序,但我不知道如何使用我的测试帐户登录。我曾尝试登录,accounts.google.com但这显然是不够的;就 chrome API 而言,没有经过身份验证的用户。

Chrome 不断提示登录,chrome://chrome-signin但是因为我无法查看页面的 html,所以我无法确定在 Selenium 中与哪些元素进行交互以使用它。

selenium google-chrome google-account google-chrome-extension selenium-chromedriver

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

Lambda将List转换为共享值的Map到唯一值的列表

我有一个Foo包含两个重要属性的列表,Bar barBaz baz.实例可以共享Bar值但具有唯一的Bazs.

我想将此List转换为Map,Baz以便共享a的所有实例的唯一值Bar放在映射到该共享的Set中Bar.

Map<Bar, Set<Baz>> m = new HashMap<>();
for (Foo foo : fooRepository.findAll()) {
    if (m.containsKey(foo.bar)) {
        m.get(foo.bar).add(foo.baz);
    } else {
        Set<Baz> set = new HashSet<>();
        set.add(foo.baz);
        m.put(foo.bar, set);
    }
}
Run Code Online (Sandbox Code Playgroud)

我自己的功能印章尚未证明完成任务.我试图将两者reducecollectList一起尝试但在尝试将不同的参数实现为lambdas时因类型问题而被绊倒.

尝试使用Collect

m = fooRepository.findAll().stream().collect(new HashMap<Bar, Set<Baz>>(), (m, foo)->m.merge(Foo::getBaz, s->s.add(foo.getBar()));
Run Code Online (Sandbox Code Playgroud)

不完整,编译器无法确定m或foo和Foo :: getBaz的类型.

Reduce不起作用,因为它不允许累加器与元素具有不同的值.

java lambda java-stream

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

Webpack 开发服务器在热时重新编译但包实际上并没有改变

我正在使用 webpack 来测试我正在编写的代码生成库的输出:https : //github.com/Neone-character-creator/app-generator/blob/master/project-template/webpack.config.js

该库将文件复制到一个新目录中,然后 webpack 为它们提供服务。

最终结果会将 Web 应用程序打包为注入服务器的 Java jar,前端将选择它应该显示的内容并将其嵌入到 iframe 中。我试图模拟这一点,我在其中显示 demo.html,其中包含一个加载 的 iframe,sheet.html加载app.bundle.js.

当开发服务器正在运行并且我更改了一些文件并重新调用库时,更新的文件被移动到位,在控制台中我可以看到 webpack 执行重新编译。

然而,当我查看编译后的包时,它实际上并没有改变,即使包的源文件不同。我必须重新启动服务器才能使包真正更新。

const path = require("path");

module.exports = {
    "mode": "development",
    "entry": "./src/main/resources/scripts/app.js",
    "output" : {
        path: path.resolve(__dirname, "src/main/resources/scripts/"),
        filename: "app.bundle.js",
        publicPath: "/src/main/resources"
    },
    devServer:{
        before: function(app, server){
            app.use("/templates/sheet.html", function(req, res) {
                const resourcePath = path.resolve(__dirname + "/src/main/resources" + req.baseUrl);
                res.sendFile(resourcePath);
            });
            app.use(/\/scripts\/.*/, function(req, res) {
                const resourcePath = path.resolve(__dirname + "/src/main/resources" + req.baseUrl);
                res.sendFile(resourcePath); …
Run Code Online (Sandbox Code Playgroud)

webpack webpack-dev-server

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