使用gradle依赖文档,我们有一个build.gradle,其中包含这样的代码片段.
repositories {
mavenCentral()
ivy {
name = 'localRepo'
artifactPattern "http://localRepo.com/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
}
}
dependencies {
compile group: 'localRepo', name: 'my-private-library', version: '2.5'
}
Run Code Online (Sandbox Code Playgroud)
这个设置确实正确地下载了所有内容,但我想调整它以便组localRepo中的东西只是试图从常春藤存储库中提取而localRepo仅用于组localRepo.localRepo只保存私有jar,所以我们不希望它被用作第一个repo,我们不想花很长时间来查询mavenCentral对于不存在的jar.
基本上我想在依赖中说使用特定的repo或者本地常春藤repo仅用于特定的组.是否有捷径可寻?
我正在尝试使用一个组来运行与我正在处理的"当前"相关的测试子集.问题是,如果我使用超类在@BeforeMethod中进行某些设置,则该方法在我运行所有测试时运行,但在我仅使用指定的组"current"运行时则不运行.
因此,当我运行所有测试时,emptyTest失败,因为调用了@BeforeMethod,当只运行组current时,不调用该方法.注意:如果我将@Test(groups = {"current"})添加到子类,那么它确实运行 - 但是,它运行所有未标记为"current"的子类,这违背了"当前"组的目的.
如果有更好的方法来实现此行为,我对所有解决方案持开放态度.
谢谢,赎金
超类:
public class TestNGSuperclass {
@BeforeMethod
public void failingToShowThatItIsNotRun() {
Assert.fail();
}
}
Run Code Online (Sandbox Code Playgroud)
子类:
@Test(groups = {"current"})
public class TestNGCurrentGroup extends TestNGSuperclass {
public void emptyTest() {}
}
Run Code Online (Sandbox Code Playgroud)
TestNG配置:
<test name="current">
<groups>
<run>
<include name="current"/>
</run>
</groups>
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
<test name="all-tests">
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
Run Code Online (Sandbox Code Playgroud) 给定以下类层次结构,我希望Foo根据在类层次结构中使用的上下文进行不同的序列化.
public class Foo {
public String bar;
public String biz;
}
public class FooContainer {
public Foo fooA;
public Foo fooB;
}
Run Code Online (Sandbox Code Playgroud)
当我序列化FooContainer时,我想将biz属性显示在fooB中.所以输出看起来像下面这样.
{
"fooA": {"bar": "asdf", "biz": "fdsa"},
"fooB": {"bar": "qwer"}
}
Run Code Online (Sandbox Code Playgroud)
我打算使用JsonView,但必须在mapper层应用于类的所有实例,这与上下文有关.
在Jackson用户邮件列表中,Tatu给出了最简单的解决方案(在2.0中工作),我现在可能最终会使用它.将赏金授予jlabedo,因为答案是如何使用自定义注释扩展Jackson的一个很棒的例子.
public class FooContainer {
public Foo fooA;
@JsonIgnoreProperties({ "biz" })
public Foo fooB;
}
Run Code Online (Sandbox Code Playgroud) 我试图找出如何让下面的代码返回,它只是插入的行 - 同事指出,建议运行ALTER FULLTEXT CATALOG uiris_production REBUILD但不能在用户事务中运行.
这必须是在一个事务的原因是,这是从一个测试框架,测试被包裹在一个事务中,然后回滚到来.
declare @search varchar(64)
set @login_test = 'foobar'
set @search = '"' + @login_test + '*"'
begin transaction
insert into users(login) values (@login_test)
select login from users where contains(login, @search)
commit
Run Code Online (Sandbox Code Playgroud) 我正在努力使用OAuth2向其他客户提供Jersey Web服务,并且很难找到与Jersey完美搭配的库.到目前为止,我已经查看了以下库.
http://static.springsource.org/spring-security/oauth/support.html
我们让演示工作,但不想使用弹簧安全性.
https://labs.ericsson.com/apis/oauth2-framework/downloads
这与RESTLet紧密相关.
http://wiki.apache.org/incubator/AmberProposal
我们简要地看了一下,但很难说出项目的状态.
https://bitbucket.org/smartproject/oauth-2.0/wiki/Home
我们刚开始看这个.
我们的主要目标是与Jersey作为资源提供者进行简单集成.
目前我使用Commons Email发送电子邮件,但我找不到在发送的电子邮件之间共享smtp连接的方法.我有以下代码:
Email email = new SimpleEmail();
email.setFrom("example@example.com");
email.addTo("example@example.com");
email.setSubject("Hello Example");
email.setMsg("Hello Example");
email.setSmtpPort(25);
email.setHostName("localhost");
email.send();
Run Code Online (Sandbox Code Playgroud)
这是非常易读的,但是当我执行大量消息时速度很慢,我认为这是重新连接每条消息的开销.因此,我使用以下代码对其进行了分析,并发现使用重新使用Transport会使事情快三倍.
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect("localhost", 25, null, null);
MimeMessage message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress("example@example.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("example@example.com"));
message.setSubject("Hello Example");
message.setContent("Hello Example", "text/html; charset=ISO-8859-1");
transport.sendMessage(message, message.getAllRecipients());
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有办法让Commons Email重用多个电子邮件发送的SMTP连接?我更喜欢Commons Email API,但性能有点痛苦.
谢谢,赎金
我的Web框架(Play 1.2.5)创建了一个EJB3Configuration,它用于创建EntityManagerFactory (源)的方法.我正在编写一个脚本,并希望generateSchemaUpdateScript()从Configuration 运行该方法以生成我可以验证并在生产部署上运行的SQL脚本.我遇到的问题是我无法弄清楚如何EntityManagerFactory在构建之后访问所使用的Configuration对象或如何生成Configuration对象.
我今天早些时候在代码中结束了以下场景(我承认有点奇怪,我已经重构了).当我运行单元测试时,我发现在超类构造函数运行的时候没有设置字段初始化.我意识到我并不完全理解构造函数/字段初始化的顺序,所以我希望有人向我解释这些发生的顺序.
class Foo extends FooBase {
String foo = "foobar";
@Override
public void setup() {
if (foo == null) {
throw new RuntimeException("foo is null");
}
super.setup();
}
}
class FooBase {
public FooBase() {
setup();
}
public void setup() {
}
}
@Test
public void testFoo() {
new Foo();
}
Run Code Online (Sandbox Code Playgroud)
来自JUnit的缩写回溯如下,我想我期望$ Foo.<init>来设置foo.
$Foo.setup
$FooBase.<init>
$Foo.<init>
.testFoo
Run Code Online (Sandbox Code Playgroud) 我一直试图用一个包含多字节字符的参数来调用exec,这些字符来自Windows上的环境变量,但还没有找到可行的解决方案.这是我迄今为止能够调试的内容.
为简单起见,假设我有一个名为"Seán"的目录,我试图将其用作exec的参数.如果我只是打电话
exec 'script', "Se\u00E1n".encode("IBM437")
Run Code Online (Sandbox Code Playgroud)
执行的脚本无法找到该文件,因为arg被调整以使重音字符丢失.如果我执行以下操作它可以工作,但这是不好的做法,因为arg应该在转到shell之前进行转义.
exec "script #{"Se\u00E1n".encode("IBM437")}"
Run Code Online (Sandbox Code Playgroud)
所以我的想法是我会使用shellescape来保护exec的使用.
require 'shellwords'
exec "script #{"Se\u00E1n".encode("IBM437").shellescape}"
Run Code Online (Sandbox Code Playgroud)
但问题是它逃脱了特殊角色,因此看起来如下 - "Se \án".我想出了这发生的地方,它来自这个正则表达式.
str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
Run Code Online (Sandbox Code Playgroud)
乍一看似乎是逃避字符而不是已知的一组shell字符.不幸的是,这套不包含特殊字符,所以我遇到了问题.
我正在寻找的是一个正则表达式,可以执行shell转义,不会弄乱特殊字符,这样我就可以在将它们传递给exec之前将其转义.