小编oil*_*lio的帖子

在Jenkinsfile中失败

在某些情况下,我想失败的构建.我怎么做?

我试过了:

throw RuntimeException("Build failed for some specific reason!")
Run Code Online (Sandbox Code Playgroud)

事实上这确实无法构建.但是,日志显示异常:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new java.lang.RuntimeException java.lang.String
Run Code Online (Sandbox Code Playgroud)

这对用户来说有点混乱.有没有更好的办法?

groovy jenkins jenkins-pipeline

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

具有相同键的多个条目的字典

我需要一个类似于Dictionary的对象,它可以使用相同的密钥存储多个条目.这可以作为标准集合,还是我需要自己动手?

为了澄清,我希望能够做到这样的事情:

var dict = new Dictionary<int, String>();
dict.Add(1, "first");
dict.Add(1, "second");

foreach(string x in dict[1])
{
    Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)

输出:

first
second
Run Code Online (Sandbox Code Playgroud)

c# collections

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

不能在Jenkinsfile中使用readMavenPom

我正在使用Jenkins文件与Jenkins 2.0一起使用.该readMavenPom方法无法识别.是否有一些我缺少的配置可以使它可用?

我的詹金斯文件:

node {
  stage 'Checkout'
  checkout scm
  env.PATH = "${tool 'maven-3'}/bin:${env.PATH}"
  stage 'Build'
  def pom = readMavenPom file: 'pom.xml'
  echo "${pom}"
  sh "mvn -DskipTests=true verify"
}
Run Code Online (Sandbox Code Playgroud)

运行时,我收到以下错误:

java.lang.NoSuchMethodError: No such DSL method 'readMavenPom' found among
[AWSEBDeployment, archive, bat, build, catchError, checkout, deleteDir, dir, echo,
emailext, error, fileExists, git, input, isUnix, load, mail, node, parallel,
properties, pwd, readFile, retry, sh, slackSend, sleep, stage, stash, step, svn,
timeout, tool, unarchive, unstash, waitUntil, withCredentials, withEnv, wrap,
writeFile, ws]
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-workflow jenkins-2

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

在MSTest中使用继承

我正在设置一些基于MSTest的单元测试.为了让我的生活更轻松,我想使用一个基类来处理通用设置和我所有测试所需的taredown.我的基类看起来像这样:

[TestClass]
public class DBTestBase {
    public TestContext TestContext { get; set; }

    [ClassInitialize()]
    public static void MyClassInitialize(TestContext testContext) {
        var config = new XmlConfigurationSource("ARconfig_test.xml");
        ActiveRecordStarter.Initialize(Assembly.Load("LocalModels"), config);
    }

    [TestInitialize()]
    public void MyTestInitialize() {
        ActiveRecordStarter.CreateSchema();
        Before_each_test();
    }

    protected virtual void Before_each_test() { }

    [TestCleanup()]
    public void MyTestCleanup() {
        After_each_test();
    }

    protected virtual void After_each_test() { }
}
Run Code Online (Sandbox Code Playgroud)

我的实际测试类看起来像这样:

[TestClass]
public class question_tests : DBTestBase {

    private void CreateInitialData() {
        var question = new Question()
                           {
                               Name = "Test Question",
                               Description = …
Run Code Online (Sandbox Code Playgroud)

unit-testing mstest visual-studio-2010

17
推荐指数
2
解决办法
6794
查看次数

如何获得具有多个类型参数的泛型类的类型?- C#

这编译:

public class A<T> {
    public void test() {
        var a = typeof (A<>);
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是:

public class A<T,S> {
    public void test() {
        var a = typeof (A<>);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:使用泛型类型'A'需要2个类型参数

如何使用两个参数获取对此泛型类型的引用?

c# generics

14
推荐指数
2
解决办法
1639
查看次数

Intellij不会识别antlr生成的源代码

我无法让Intellij识别antlr4生成的源代码.对生成的代码的任何引用都显示为错误,代码完成不起作用等.

我正在使用maven和antlr4-maven-plugin来生成代码.我的代码,引用生成的代码编译并在maven下构建良好.生成的代码位于/ target/generated-sources/antlr4下,这正是Intellij所期望的.

我已经尝试过常用的修复程序,例如重新导入maven项目,更新文件夹,使缓存无效等等.似乎没有任何工作.

有人见过这个吗?有没有办法直接在Intellij中指向生成的源?

intellij-idea antlr4

12
推荐指数
4
解决办法
7025
查看次数

在XSLT中,我可以只运行一次模板

我有一个XSLT块,可以在整个转换过程中多次应用.但我希望它实际上只在第一次应用时运行,它应该被忽略所有的次数.我该怎么做呢?

作为一个例子,这是我想要做的事情:在样式表中我定义了一个全局变量:

<xsl:variable name="run_once" select="0"/>
Run Code Online (Sandbox Code Playgroud)

然后我有一个多次调用的模板:

<xsl:template name="some_template">
    <xsl:if test="$run_once != 1">
        <xsl:variable name="run_once" select="1"/>
        <xsl:text>THIS TEXT SHOULD APPEAR ONLY ONCE</xsl:text>
    </xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为变量不能改变,只能重载.因此,一旦some_template退出,$ run_once再次为0,并且每次调用模板时都会应用文本.是否有某种类型的ifdef功能或我可以设置的其他全局对象?

如果您对我为什么要这样做感兴趣,下面是对我的问题和我使用的解决方案的更详细的解释:

  • 我的输入是原始XML中的数据,我的输出是WordML格式的报告.
  • 在输入中我有一系列节点(名为theNode).这些节点中的一些(但不是全部)需要在输出中显示.仅当XPATH hairyLogic为true 时才应显示该节点 (hairyLogic显然很长且很复杂).
  • theNode也有一个类型(存储在子节点中).在输入中,所有相同类型的节点将始终组合在一起.在输出中,所有相同类型的节点应该在该类型的特定标题下分组(每种类型应该只有一个标题).

这是我最终使用的解决方案:

...
<xsl:apply-templates select="theNode[hairyLogic]"/>
...

<xsl:template match="theNode">
    <xsl:if test="count(preceding-sibling::theNode[type = current()/type and hairyLogic])=0">
        <xsl:choose>
            <xsl:when test="type = 'TYPE1a' or type = 'TYPE1b'">
                <xsl:call-template name="TYPE1Heading"/>
            </xsl:when>
            <xsl:when test="type = 'TYPE2'">
                <xsl:call-template name="TYPE2Heading"/>
            </xsl:when>
        </xsl:choose>
    </xsl:if>
    ...
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我选择使用命名模板作为标题,因为它们包含不依赖于输入XML中任何数据的基本WordML.

我不喜欢这个解决方案,因为hairyLogic被重复并且if语句很复杂且难以阅读.也许你有一个更好的解决方案,不需要可变变量?

xslt

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

比较C#中的两个XmlNode

有没有一种简单的方法来比较两个XML结构,以确定它们是否具有相同的结构和数据?

我有一个返回XmlNode的函数,我正在尝试为它编写单元测试.我将正确的XML结果存储在一个文件中.在测试中,我将文件加载到XmlDocument中,找到正确的XmlNode并与函数的结果进行比较.直接比较不起作用(如预期的那样),而且InnerXml也不起作用.我正在考虑从InnerXml中删除所有空格并比较它,或者编写我自己的比较来走树,但我不喜欢这两个选项.

.net c# xml xmlnode

5
推荐指数
2
解决办法
6222
查看次数

观察者在IE中不起作用

在我的ruby on rails应用程序中,我尝试使用Prototype Form.Element.Observer来运行消息中的字符计数.这适用于Firefox/Safari/Chrome,但不适用于IE.在IE上,观察者根本不会开火.有没有修复或不同的方式这样做?

我的ruby标签看起来像这样:

<%= countdown_field('txtmsg[memo]','memo-counter', 141, :frequency => 0.10) %>
Run Code Online (Sandbox Code Playgroud)

countdown_field函数如下所示:

  def countdown_field(field_id,update_id,max,options = {})
    function = "$('#{update_id}').innerHTML = (#{max} - $F('#{field_id}').length);"
    count_field_tag(field_id,function,options)
  end

  def count_field_tag(field_id,function,options = {})  
    out = javascript_tag function, :defer => 'defer'
    out += observe_field(field_id, options.merge(:function => function))
    return out
  end
Run Code Online (Sandbox Code Playgroud)

生成的HTML如下所示:

<textarea class="memo-tag text txtmsg-memo" id="txtmsg[memo]" name="txtmsg[memo]" />
<p>You have <span id="memo-counter">...</span> characters left.</p>

<script defer="defer" type="text/javascript">
  $('memo-counter').innerHTML = (141 - $F('txtmsg[memo]').length);
</script>
<script type="text/javascript">
  new Form.Element.Observer('txtmsg[memo]', 0.1, function(element, value) {
                  $('memo-counter').innerHTML = (141 …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ruby-on-rails prototypejs

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

Docker容器在boot2docker中不使用主机DNS

我正在Mac上运行boot2docker.OSX版本10.9.3 boot2docker版本4.3.12 Docker版本0.12.0

boot2docker映像是一个使用virtualbox的vagrant box.我尝试过一些流浪盒(例如stigkj/boot2docker).所有人都表现出这个问题.

如果我ssh到boot2docker映像并查看/etc/resolv.conf它使用的是nameserver 10.0.2.3.

我使用以下命令启动一个简单的docker镜像:

docker run -i -t ubuntu /bin/sh
Run Code Online (Sandbox Code Playgroud)

查看该容器中的/etc/resolv.conf,它使用8.8.8.8和8.8.4.4作为名称服务器.

docker.logboot2docker vm 的文件中,有这一行:

2014/06/30 15:25:01 Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
Run Code Online (Sandbox Code Playgroud)

根据我的理解,docker应该使用主机的名称服务器.仅当主机使用127.0.0.1作为其名称服务器时,它才应默认为google名称服务器作为备份.

主机没有使用127.0.0.1作为名称服务器,但似乎docker认为它是.有关如何让它正确检测名称服务器的任何建议?

dns docker boot2docker

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

SQLite 64位整数在jooq中被认为是整数

我有一个与jOOQ一起使用的SQLite数据库.当我使用jOOQ的代码生成工具时,它会按预期构建所有表和记录类.但是,所有SQLite INTEGER列都会转换为java.lang.Integer生成的代码中的字段.

问题是SQLite INTEGER's可以存储多达64位的有符号整数,其中java.lang.Integer只有32位有符号整数.

是否有可能告诉jOOQ java.lang.Long这些列使用(64位有符号)?

java sqlite jooq long-integer

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

在不使用C#中的参数的情况下将信息传递给构造函数

我已经支持自己进入了一个角落.这是我所拥有的简化版本(在C#中):

class OuterClass
{
    private class BadClass
    {
        private int Data;

        public BadClass()
        {
            Data = 0;

            ...
        }
    }

    T Build<T>(Object Input)
    {
        T x = new T();
        ...
        return x;
    }

    void SomeMethod()
    {
        BadClass a = Build<BadClass>(anObject);
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我现在必须根据创建BadClass实例的OuterClass实例更改Data的初始值.通常我会使用带有参数的BadClass构造函数:

public BadClass(int Data)
{
    this.Data = Data;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我在几个泛型类型中使用BadClass,所以我必须有一个无参数的BadClass构造函数.太糟糕了我不能做这样的事情:

Build<BadClass(5)>(anObject);
Run Code Online (Sandbox Code Playgroud)

那么,当我无法将参数传递给构造函数时,如何给出构造函数的运行时信息?
是否可以创建BadClass类型的运行时实例,为其提供所需的信息,然后在我的泛型类型中使用它?

编辑:我使用List作为示例泛型类型但是并没有完全表达我的困境的深度...
我可以在Build中创建一个测试来调用init函数,如果我正在使用BadClass,但这非常hacky .我希望找到一个稍微不那么难看的方法.

c# generics constructor

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

使用 Docker API 从私有注册表中拉取

从私有注册表中提取映像的语法是什么?

我正在尝试使用 API 重现以下命令:

docker pull localhost:5000/oillio/my_app:1.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

看起来我应该使用 images/create 调用。有4个参数,fromImage、fromSrc、repo、tag、registry。我一生都无法弄清楚如何设置这些参数来重现上述命令。

docker

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