我正在尝试将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做类似的事情?
在我们的软件中,我们广泛使用MDC来跟踪会话ID和Web请求的用户名等内容.这在原始线程中运行时工作正常.但是,有很多事情需要在后台处理.为此,我们使用java.concurrent.ThreadPoolExecutor
和java.util.Timer
类以及一些自动异步执行服务.所有这些服务都管理自己的线程池.
这就是Logback的手册在这样的环境中使用MDC所要说的:
映射的诊断上下文的副本不能始终由来自启动线程的工作线程继承.当java.util.concurrent.Executors用于线程管理时就是这种情况.例如,newCachedThreadPool方法创建一个ThreadPoolExecutor,就像其他线程池代码一样,它具有复杂的线程创建逻辑.
在这种情况下,建议在将任务提交给执行程序之前,在原始(主)线程上调用MDC.getCopyOfContextMap().当任务运行时,作为其第一个操作,它应调用MDC.setContextMapValues()以将原始MDC值的存储副本与新的Executor托管线程相关联.
这样会很好,但是很容易忘记添加这些调用,并且没有简单的方法来识别问题,直到为时已晚.Log4j的唯一标志是您在日志中丢失了MDC信息,而使用Logback,您会收到过时的MDC信息(因为胎面池中的线程从其上运行的第一个任务继承其MDC).两者都是生产系统中的严重问题.
我不认为我们的情况有任何特殊之处,但我在网上找不到这个问题.显然,这不是很多人碰到的东西,所以必须有办法避免它.我们在这做错了什么?
我知道可以在Mercurial中关闭一个命名分支,这样它就不会出现在hg branches
列表中:
hg commit --close-branch -m 'close badbranch, this approach never worked'
Run Code Online (Sandbox Code Playgroud)
如果需要,以后可以重新打开分支吗?
在多模块项目中,如何指定要在所有子模块中执行插件目标,而不是在父项目中执行?有<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
阶段.
我通过jasmine-maven-plugin使用Jasmine,我想在Maven构建输出中看到console.log()消息.有没有办法实现这个目标?
如果无法重定向console.log(),是否还有其他方法可以从我的测试中进行记录,以便它们显示在Maven构建输出上?
我正在以无头的方式在Jenkins上运行这些测试,并希望能够从测试中获得一些调试输出.
我正在将一个中型Java应用程序的构建从Ant迁移到Maven.我可以轻松地迁移基本构建内容,但我还想从Maven构建中创建安装程序包.最简单的方法是通过Ant插件调用原始的Ant脚本,但我想也许我应该首先考虑一下Maven的支持.
我需要为不同的平台创建几个不同的安装程序:
对于Linux现在我认为我们只有一个tar.gz和一些Bash脚本来启动守护进程 - Debian/RPM包会更好,可能还有依赖包定义.对于Windows安装程序,我们使用NullSoft安装程序.我不知道MacOS捆绑包现在是如何组装的.
是否有任何工具可以从Maven那里(或至少部分)做到这一点?
我有一个Jenkins工作来构建master
我的GitHub仓库的分支.当我提交一个提交时master
,它很好地触发,我很高兴.
我还希望有一个Jenkins工作,可以在这个存储库中构建任何其他分支.即每当我将提交推送到分支(不是master
)时,我想让这个Jenkins工作来构建该分支,并且只有那个分支.
使用GitHub pull-request插件需要我创建一个pull-request,并将我的提交合并到master
.我想这样做而不必创建一个pull-request,并且只在没有合并它的情况下构建我的提交master
.
设置Git插件来构建所有分支意味着无论何时我推送到掌握,都会构建所有分支.我想只构建一个已修改过的分支.
这可以在詹金斯做吗?
在Maven中,您可以拥有编译时依赖项和测试依赖项.这是我喜欢的功能,M2Eclipse插件也可以在Eclipse中使用,这很棒.因此,如果我将jmock.jar
我的项目添加为测试依赖项,它将显示在JUnit测试的类路径中,但在我调试应用程序本身时将不会出现.
这正是我现在想要实现的目标,但没有M2Eclipse或Maven.有没有办法在纯Eclipse中执行此操作?(可能没有安装任何插件.)
我有一段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)
这有可能吗?
举一个简单的例子:我正在使用默认分支,在本地提交一些更改集,然后从主存储库中提取了一些更改集.我已经在我孤立的本地存储库中工作了几天,因此在将结果推回到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
在合并之后做的就是这样.)