【问题标题】:How to create Java application with dependencies manually如何手动创建具有依赖关系的 Java 应用程序
【发布时间】:2020-03-06 18:53:54
【问题描述】:

我使用 maven 为 kafka 创建了一个 java 应用程序。我介绍java代码:

import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.common.serialization.Serdes;
import org.apache.kafka.streams.StreamsBuilder;
import org.apache.kafka.streams.StreamsConfig;
import org.apache.kafka.streams.kstream.Consumed;
import org.apache.kafka.streams.kstream.KStream;
import org.apache.kafka.streams.kstream.Produced;

import java.util.Properties;

public class pega {
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(StreamsConfig.APPLICATION_ID_CONFIG, "first-app");
        properties.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
        properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
        properties.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);

        StreamsBuilder builder = new StreamsBuilder();

        KStream<String, String> order = builder.stream("input-topic", Consumed.with(Serdes.String(),Serdes.String()))
                .selectKey((k,v) -> v);
        order.to("output-topic", Produced.with(Serdes.String(),Serdes.String()));

        KafkaStreams streams = new KafkaStreams(builder.build(), properties);
        streams.start();

        System.out.println(streams.toString());

        Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
    }
}

我创建这个项目的方式是通过 IntelliJ IDE。现在我想在没有互联网访问的环境中创建相同的项目,安装软件和应用程序的唯一方法是通过向维护团队提出请求。因此,为了提出要求,出现了许多问题。 但在继续之前,我先展示 pom.xml 的一部分。

...
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-streams</artifactId>
    <version>2.3.1</version>
</dependency>
...

当我编写这个 pom.xml 时,IntelliJ 正在做的是从互联网下载 Kafka 流包。

问题

1)这些包存储在哪里,maven在哪里寻找本地包?

2) maven 正在寻找的存储库是否与 java 存储其默认包的存储库相同?

3) 如果安装了 maven,如果所有依赖项都在本地存储库上,它是否可以在没有互联网访问的情况下正常工作?

4) 如果我想在没有任何工具的情况下创建一个 java 应用程序,我将如何处理这些依赖项(如 Kafka 流)? (万一无法安装maven)。

【问题讨论】:

  • 很多问题,但是 2) 变成了什么?

标签: java maven apache-kafka


【解决方案1】:

1) maven包存放在:

  1. Windows:C:\Users\.m2
  2. Linux:/home/user_name/.m2
  3. Mac:/Users/user_name/.m2

你会在以下路径找到maven包:/home/user_name/.m2/repository/org/commonjava/maven

2) 常见的核心 java 包和插件位于 Maven 查找的同一路径。

3) 下载软件包后,您无需任何互联网访问即可工作。

4) 您需要使用特定的工具来处理这些依赖项,这将使您的工作更轻松。如果不是 maven,则仅当 Gradle 支持您尝试使用的服务或依赖项时,您才能使用它。 (我不确定 Gradle 是否有一些用于处理 Kafka 依赖项的库)。

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2021-11-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多