小编Luc*_*tto的帖子

Cordova config.xml环境变量

场景:

我正在构建一个Ionic3应用程序,我config.xml有一些数据,我希望能够根据我的环境进行更改(例如,我希望我的facebook app id具有不同的开发,分期和生产价值).

我实现了这个创建模板config.xml(文件是config.tpl.xml)和一个before_prepare cordova钩子,用正确的值替换模板中的变量并保存生成的内容config.xml.

所述cordova钩使用npmes6-template-strings:

npm install es6-template-strings --save-dev
Run Code Online (Sandbox Code Playgroud)

钩子是:

#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var compile = require('es6-template-strings/compile');
var resolveToString = require('es6-template-strings/resolve-to-string');

var ROOT_DIR = process.argv[2];
var FILES = {
    SRC: "config.tpl.xml",
    DEST: "config.xml"
};

var env = process.env.NODE_ENV || 'dev';
var envFile = 'src/environments/environment.' + env + '.json';

var srcFileFull = path.join(ROOT_DIR, FILES.SRC); …
Run Code Online (Sandbox Code Playgroud)

cordova ionic3

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

Java 11 连接重置(间歇性)

我使用Java11httpclient 4.5.11制作要求的API,到目前为止一切正常。但是一个多星期前付款https://api.moip.com.br开始出现间歇性错误(Connection reset)。

我知道他们需要 TLSv1.2 并且 Java11 支持它,而且错误是间歇性的(有时它起作用,有时不起作用)。我联系了他们,他们说他们迁移了他们的代码库,但他们处理请求的配置是相同的,我对此表示怀疑,但无论如何,考虑到他们处理多个组织的付款,我认为有一些东西我可以做些什么来避免这些错误。作为旁注,我可以毫无问题地向 PayPal、Stripe、Google Recaptcha 以及其他服务提出请求。

我如何创建连接:

try (CloseableHttpClient httpClient = createHttpClientBuilder().build()) {
    HttpUriRequest httpMethod = createHttpUriRequest(request);
    HttpResponse httpResponse = httpClient.execute(httpMethod);
    SimpleHttpClientResponse response = createResponse(httpResponse);
    return response;
} catch (Exception e) {
    throw new HTTPException(request, e);
}
Run Code Online (Sandbox Code Playgroud)

以下是我如何创建连接管理器、客户端构建器和请求本身:

private static HttpClientBuilder createHttpClientBuilder() throws KeyManagementException, NoSuchAlgorithmException {
    CookieStore httpCookieStore = new BasicCookieStore();
    RequestConfig defaultRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();

    HttpClientBuilder builder = HttpClients.custom()
            .setConnectionManager(connectionManager)
            .setConnectionManagerShared(true)
            .setDefaultCookieStore(httpCookieStore)
            .setDefaultRequestConfig(defaultRequestConfig);

    return builder;
}

private …
Run Code Online (Sandbox Code Playgroud)

java java-http-client java-11

5
推荐指数
0
解决办法
2351
查看次数

仅在专门调用时运行 gradle 任务

我有一个build.gradle创建 javaWAR文件的文件。该文件用于 Docker 多阶段构建的一个阶段,以生成我在生产、暂存等中使用的 Docker 映像(配置文件/机密在映像之外)。

但是在开发中,虽然大部分时间我使用普通构建来生成WAR文件(或分解的WAR),并且它工作正常,但有时我只想在我的项目中执行带有主类的单个java文件

我实现了将以下内容添加到文件中:

task execFile(type: JavaExec) {
    main = mainClass

    classpath = sourceSets.main.runtimeClasspath

    if (System.getProperty('debug', 'false') == 'true') {
        jvmArgs "-Xdebug", "-agentlib:jdwp=transport=dt_socket,address=8788,server=y,suspend=y"
    }

    systemProperties System.getProperties()
}
Run Code Online (Sandbox Code Playgroud)

然后我可以执行文件传递系统属性:

gradle execFile -PmainClass=com.mysite.MyClass -Dsomeprop=somevalue
Run Code Online (Sandbox Code Playgroud)

如果我想调试我运行:

gradle execFile -PmainClass=com.mysite.MyClass -Dsomeprop=somevalue -Ddebug=true
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以执行(和调试)单个文件,这在开发过程中的某些情况下非常有用,但问题是即使我没有execFile明确运行,也会执行此代码。

这会在构建和生成 WAR 文件时导致错误,所以我正在做的是注释这些行,在运行单个文件时取消注释,并在运行文件后再次注释(当我记得时),然后再推送git repo(否则docker 构建过程以错误告终)。

这很糟糕,我知道。

根据我的理解,该代码在配置阶段运行,为了使代码在任务执行中运行,我可以将代码包含在doLast方法中(或使用简写<<):

为什么 gradle 在 gradle.build 中运行每个任务

但在这种情况下,我得到了错误No main …

gradle

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

标签 统计

cordova ×1

gradle ×1

ionic3 ×1

java ×1

java-11 ×1

java-http-client ×1