小编Lór*_*tér的帖子

在哪里放置不应提交的Gradle配置(即凭证)?

我正在尝试将Gradle构建的工件部署到Maven仓库,我需要为其指定凭据.这个现在工作正常:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/snapshots/") {
                authentication(userName: "admin", password: "admin123")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢将凭据存储在源代码管理中.使用Maven,我将定义一个服务器配置,并在我的分配中分配凭据~/.m2/settings.xml.我如何使用Gradle做类似的事情?

gradle

143
推荐指数
6
解决办法
8万
查看次数

如何在线程池中使用MDC?

在我们的软件中,我们广泛使用MDC来跟踪会话ID和Web请求的用户名等内容.这在原始线程中运行时工作正常.但是,有很多事情需要在后台处理.为此,我们使用java.concurrent.ThreadPoolExecutorjava.util.Timer类以及一些自动异步执行服务.所有这些服务都管理自己的线程池.

这就是Logback的手册在这样的环境中使用MDC所要说的:

映射的诊断上下文的副本不能始终由来自启动线程的工作线程继承.当java.util.concurrent.Executors用于线程管理时就是这种情况.例如,newCachedThreadPool方法创建一个ThreadPoolExecutor,就像其他线程池代码一样,它具有复杂的线程创建逻辑.

在这种情况下,建议在将任务提交给执行程序之前,在原始(主)线程上调用MDC.getCopyOfContextMap().当任务运行时,作为其第一个操作,它应调用MDC.setContextMapValues()以将原始MDC值的存储副本与新的Executor托管线程相关联.

这样会很好,但是很容易忘记添加这些调用,并且没有简单的方法来识别问题,直到为时已晚.Log4j的唯一标志是您在日志中丢失了MDC信息,而使用Logback,您会收到过时的MDC信息(因为胎面池中的线程从其上运行的第一个任务继承其MDC).两者都是生产系统中的严重问题.

我不认为我们的情况有任何特殊之处,但我在网上找不到这个问题.显然,这不是很多人碰到的东西,所以必须有办法避免它.我们在这做错了什么?

java logging logback slf4j mdc

128
推荐指数
5
解决办法
5万
查看次数

可以在Mercurial中重新打开一个封闭的分支吗?

我知道可以在Mercurial中关闭一个命名分支,这样它就不会出现在hg branches列表中:

hg commit --close-branch -m 'close badbranch, this approach never worked'
Run Code Online (Sandbox Code Playgroud)

如果需要,以后可以重新打开分支吗?

mercurial

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

在子模块上执行Maven插件目标,但不在父模块上执行

在多模块项目中,如何指定要在所有子模块中执行插件目标,而不是在父项目中执行?有<pluginManagement>,但只定义了执行的配置 - 子模块仍然需要引用插件来执行目标:

[...]但是,这只配置在子节点的plugins元素中实际引用的插件.(POM参考)

有没有其他方法来实现这一目标

更新:我根据Pascal的建议尝试了这个:

<!-- ... -->
<packaging>pom</packaging>
<modules>
  <module>child</module>
</modules>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-jar-plugin</artifactId>
      <executions>
        <execution>
        <phase>integration-test</phase>
        <goals>
          <goal>jar</goal>
        </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

这仍将为父项目生成.jar,即使jar目标已绑定到integration-test阶段.

java maven-2

62
推荐指数
3
解决办法
5万
查看次数

在Jasmine测试中将对console.log()的调用重定向到标准输出

我通过jasmine-maven-plugin使用Jasmine,我想在Maven构建输出中看到console.log()消息.有没有办法实现这个目标?

如果无法重定向console.log(),是否还有其他方法可以从我的测试中进行记录,以便它们显示在Maven构建输出上?

我正在以无头的方式在Jenkins上运行这些测试,并希望能够从测试中获得一些调试输出.

javascript jasmine jasmine-maven-plugin

60
推荐指数
4
解决办法
6万
查看次数

如何使用Maven创建安装程序

我正在将一个中型Java应用程序的构建从Ant迁移到Maven.我可以轻松地迁移基本构建内容,但我还想从Maven构建中创建安装程序包.最简单的方法是通过Ant插件调用原始的Ant脚本,但我想也许我应该首先考虑一下Maven的支持.

我需要为不同的平台创建几个不同的安装程序:

  • Windows 32/64位
  • Linux 32/64位
  • MacOS 32/64位

对于Linux现在我认为我们只有一个tar.gz和一些Bash脚本来启动守护进程 - Debian/RPM包会更好,可能还有依赖包定义.对于Windows安装程序,我们使用NullSoft安装程序.我不知道MacOS捆绑包现在是如何组装的.

是否有任何工具可以从Maven那里(或至少部分)做到这一点?

java installer maven-2

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

仅构建已推送到的Git分支

我有一个Jenkins工作来构建master我的GitHub仓库的分支.当我提交一个提交时master,它很好地触发,我很高兴.

我还希望有一个Jenkins工作,可以在这个存储库中构建任何其他分支.即每当我将提交推送到分支(不是master)时,我想让这个Jenkins工作来构建该分支,并且只有那个分支.

使用GitHub pull-request插件需要我创建一个pull-request,并将我的提交合并到master.我想这样做而不必创建一个pull-request,并且只在没有合并它的情况下构建我的提交master.

设置Git插件来构建所有分支意味着无论何时我推送到掌握,都会构建所有分支.我想只构建一个已修改过的分支.

这可以在詹金斯做吗?

git github jenkins jenkins-plugins

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

Eclipse类路径条目仅用于测试

在Maven中,您可以拥有编译时依赖项和测试依赖项.这是我喜欢的功能,M2Eclipse插件也可以在Eclipse中使用,这很棒.因此,如果我将jmock.jar我的项目添加为测试依赖项,它将显示在JUnit测试的类路径中,但在我调试应用程序本身时将不会出现.

这正是我现在想要实现的目标,但没有M2Eclipse或Maven.有没有办法在纯Eclipse中执行此操作?(可能没有安装任何插件.)

java eclipse unit-testing classpath

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

将JS函数传递给Emscripten生成的代码

我有一段C++代码通过Emscripten转换为JavaScript.我希望转换后的C++代码能够回调调用它的JavaScript代码.就像是:

JavaScript的:

function callback(message) {
    alert(message);
}

ccall("my_c_function", ..., callback);
Run Code Online (Sandbox Code Playgroud)

C++:

void my_c_function(whatever_type_t *callback) {
    callback("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

javascript emscripten

17
推荐指数
3
解决办法
6205
查看次数

合并方向在Mercurial中是否重要?

举一个简单的例子:我正在使用默认分支,在本地提交一些更改集,然后从主存储库中提取了一些更改集.我已经在我孤立的本地存储库中工作了几天,因此在将结果推回到master之前,要进行相当多的更改.

default ---o-o-o-o-o-o-o-o-o-o-o  (pulled stuff)
            \
             o----o------------o  (my stuff)
Run Code Online (Sandbox Code Playgroud)

我现在可以做两件事.

选项1:

hg pull
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#1:

default ---o-o-o-o-o-o-o-o-o-o-o
            \                   \
             o----o------------o-O
Run Code Online (Sandbox Code Playgroud)

选项#2:

hg pull
hg update
hg merge
Run Code Online (Sandbox Code Playgroud)

结果#2:

default ---o-o-o-o-o-o-o-o-o-o-o-O
            \                   /
             o----o------------o
Run Code Online (Sandbox Code Playgroud)

这两个结果看起来与我同构,但在实践中似乎选项#2导致更小的变更集(因为它只对主线应用我的少量更改,而不是将所有主线更改应用于我的少数).

我的问题是:这有关系吗?我应该关心合并的方向吗?如果我这样做,我可以节省空间吗?(hg log --patch --rev tip在合并之后做的就是这样.)

merge mercurial dvcs

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