小编din*_*p24的帖子

Gradle:按版本分类器覆盖传递依赖项

在我的项目中声明的依赖项之一具有传递依赖性'com.google.guava:guava:15.0'.但是我在WAS/Weblogic上部署的应用程序由于已修复的CDI问题而无效'com.google.guava:guava:15.0:cdi1.0'.(相同版本,但有分类器)我需要告诉gradle在构建和打包过程中使用这个jar.我试图弄清楚如何使用jar特定的版本分类器来提取这种传递依赖.

试过以下方法:

  1. 明确添加了依赖项:compile 'com.google.guava:guava:15.0:cdi1.0'.但两个罐子都包含在最终的WAR中.
  2. 明确添加了依赖关系并定义了解决策略:

    configurations.all {
        resolutionStrategy {
            force 'com.google.guava:guava:15.0:cdi1.0'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    即使这样也行不通.

  3. 定义了检查和更改版本的解决方案策略.

    configurations.all {
         resolutionStrategy.eachDependency { DependencyResolveDetails details ->
             if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') {
                details.useVersion "15.0:cdi1.0"
                //details.useTarget "com.google.guava:guava:15.0:cdi1.0"
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    即使这样也行不通.

需要您就如何解决此问题提出建议.

java dependency-management gradle maven guava

44
推荐指数
4
解决办法
3万
查看次数

Docker swarm:在堆栈部署期间忽略docker compose文件中的'build'配置

我们创建了一个包含多个服务的docker compose文件.这些服务的映像使用"build"配置选项在运行时构建.相应的Dockerfile在相应的目录中给出.

示例docker撰写文件...

version: '3'
services:
  db2server:
    build: ./db2server
    ports:
      - "50005:50000"
    command: ["db2start"]
  appruntime:
    build: ./appruntime
    depends_on:
     - db2server
Run Code Online (Sandbox Code Playgroud)

此docker compose文件与docker-compose命令一起使用.

  • 图像是在运行时根据db2server&appruntime目录中存在的Dockerfile构建的
  • 这些映像部署在主机中

但是当我们尝试在docker swarm中部署它时,会抛出以下错误......

docker stack deploy -c /home/docker/docker-compose.yml app

Ignoring unsupported options: build

Creating network app_default
Creating service app_db2server
failed to create service app_db2server: Error response from daemon: rpc error: code = InvalidArgument desc = ContainerSpec: image reference must be provided
Run Code Online (Sandbox Code Playgroud)

看起来在docker swarm中的堆栈部署期间忽略了'build'配置选项.

我们如何在docker swarm中的docker compose文件中部署这些服务(使用构建选项).

docker dockerfile docker-compose docker-swarm

14
推荐指数
3
解决办法
7971
查看次数

Jackson序列化:将字段值设置为XML元素名称

我们使用Jackson jax-rs XML内容提供程序在我们基于jax-rs的REST API项目中处理XML内容类型.在序列化POJO列表时,我们需要从POJO中的字段动态设置xml元素名称.

public class ResponsePOJO {
     @JacksonXmlProperty
     @JacksonXmlElementWrapper(useWrapping = false)
     private List<Message> message = new ArrayList<Message>();
}

public class Message {
     private String type; // "Error" or "Warning"
     private String msg; // The actual message
}
Run Code Online (Sandbox Code Playgroud)

默认Jackson序列化XML:

<ResponsePOJO>
    <message>
        <type>Error</type>
        <msg>Some random error message</msg>
    </message>
    <message>
        <type>Warning</type>
        <msg>Some random warning message</msg>
    </message>
</ResponsePOJO>
Run Code Online (Sandbox Code Playgroud)

我们的要求,即将类型设置为XML元素名称.

<ResponsePOJO>
    <Error>
        <msg>Some random error message</msg>
    </Error>
    <Warning>
        <msg>Some random warning message</msg>
    </Warning>
</ResponsePOJO>
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我们以下列方式编写了一个自定义XML序列化程序:

public class MessageListSerializer extends
        JsonSerializer<List<Message>> {
    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

java xml jax-rs jackson

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

Jackson:从XSD生成Jackson类

类似于JAXB生成给定XSD的JAXB类,Jackson提供了任何实用程序来从XSD或JSON生成Jackson类。

JAXB类生成器已经为定义的XSD模式生成了一组类。例如,对于多态类型,JAXB具有以下注释,用于基于XML元素名称来标识名称。

@XmlElements({
    @XmlElement(name = "Dog", type = Dog.class),
    @XmlElement(name = "Cat", type = Cat.class)
})
protected List<Animal> animal;
Run Code Online (Sandbox Code Playgroud)

是否可以在Jackson中创建类似的类。即基于XML元素名称来标识类型。

java xml xsd jaxb jackson

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