内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何使用maven構(gòu)建java9service-創(chuàng)新互聯(lián)

這篇文章主要介紹了如何使用maven構(gòu)建java9 service,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

臨澧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

maven

整個工程跟傳統(tǒng)maven多module的工程結(jié)構(gòu)一樣,java9的一個module對應(yīng)maven project的一個module。下面是根目錄下的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>java9-service-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <modules>
    <module>consumer-demo</module>
    <module>service-sort</module>
    <module>service-sort-bubble</module>
    <module>service-sort-merge</module>
  </modules>
  <packaging>pom</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--讓intellij能夠正確編譯java9,不然老是變回使用1.5-->
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
  </properties>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <release>9</release>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

</project>

這里管理了一個maven-compiler-plugin,配置release為9,因為java9支持multi release,可以同時支持多個java版本,這里編譯為java9版本。

service-sort

這個是service接口module

module service.sort {
  exports service.sort;
  uses service.sort.SortService;
}

這里同時聲明uses SortService表示是它需要在這個module里頭使用ServiceLoader去加載service實例

public interface SortService {
  public <T extends Comparable> List<T> sortList(List<T> list);

  public static SortService getProviderInstanceLazy() {
    Stream<Provider<SortService>> providers = ServiceLoader.load(SortService.class)
        .stream();
    //provider方法等到get的時候才會實例化
    SortService service = providers.map(Provider::get)
        .findAny()
        .orElse(null);
    return service;
  }
}

這里在聲明接口的同時,也增加了靜態(tài)方法,用于加載service實例。

service-sort-bubble

maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>java9-service-demo</artifactId>
    <groupId>com.example</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>service-sort-bubble</artifactId>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>service-sort</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

這里添加對api包的依賴

module-info.java

module service.sort.bubble {
  requires service.sort;
  provides service.sort.SortService with sort.impl.bubble.BubbleSort;
}

這里聲明了BubbleSort提供了SortService的實現(xiàn)

BubbleSort

public class BubbleSort implements SortService {

  public <T extends Comparable> List<T> sortList(List<T> list) {
    System.out.println("use BubbleSort");
    for (int outer = 0; outer < list.size() - 1; outer++) {
      for (int inner = 0; inner < list.size()-outer-1; inner++) {
        if (list.get(inner).compareTo(list.get(inner + 1)) > 0) {
          swap(list, inner);
        }
      }
    }
    return list;
  }

  private <T> void swap(List<T>list, int inner) {
    T temp = list.get(inner);
    list.set(inner, list.get(inner + 1));
    list.set(inner + 1, temp);
  }
}

service-sort-merge

maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>java9-service-demo</artifactId>
    <groupId>com.example</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>service-sort-merge</artifactId>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>service-sort</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

module-info.java

module service.sort.merge {
  requires service.sort;
  provides service.sort.SortService with sort.impl.merge.MergeSort;
}

這里聲明了MergeSort為SortService接口的實現(xiàn)

MergeSort

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Arrays;
import service.sort.SortService;

public class MergeSort implements SortService {

  public <T extends Comparable> List<T> sortList(List<T> list) {
    System.out.println("using MergeSort");
    Collections.sort(list);
    return list;
  }
}

consumer

maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>java9-service-demo</artifactId>
    <groupId>com.example</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>consumer-demo</artifactId>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>service-sort</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

注意這里沒有添加實現(xiàn)類的依賴

module-info.java

module consumer {
  requires service.sort;
}

Main

public class Main {

  public static void main(String[] args) {

    System.out.println("sort service consumer started.");
    List<Integer> data = new ArrayList<Integer>();
    data.add(5);
    data.add(3);
    data.add(10);
    data.add(2);
    data.add(8);

    SortService sortService = SortService.getProviderInstanceLazy();
    if (sortService != null) {
      sortService.sortList(data);
    }
    System.out.println(data);
    System.out.println("finish");
  }
}

編譯及運行

編譯

mvn clean install

這里是在根目錄下執(zhí)行

使用bubble

復(fù)制代碼 代碼如下:


java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main

注意這里添加了bubble的jar到module-path

輸出

sort service consumer started.
use BubbleSort
[2, 3, 5, 8, 10]
finish

使用merge

復(fù)制代碼 代碼如下:


java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main

注意這里添加了merge的jar到module-path

輸出

sort service consumer started.
using MergeSort
[2, 3, 5, 8, 10]
finish

兩個service實現(xiàn)都添加

復(fù)制代碼 代碼如下:


java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main

或者

復(fù)制代碼 代碼如下:


java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main

輸出

sort service consumer started.
use BubbleSort
[2, 3, 5, 8, 10]
finish

發(fā)現(xiàn)貌似跟添加到path的順序沒有關(guān)系,即使把merge的jar包放在前面,也是使用bubble

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何使用maven構(gòu)建java9 service”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

當(dāng)前名稱:如何使用maven構(gòu)建java9service-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://www.rwnh.cn/article26/dopecg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器ChatGPT、網(wǎng)站策劃面包屑導(dǎo)航、網(wǎng)站改版關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
上高县| 阿瓦提县| 田林县| 巴里| 金沙县| 道真| 张家川| 家居| 塔城市| 额尔古纳市| 环江| 石狮市| 新民市| 蒲城县| 民和| 雷州市| 安庆市| 银川市| 建平县| 五河县| 驻马店市| 祥云县| 衡阳县| 蕉岭县| 昌吉市| 利川市| 津南区| 台南市| 苗栗县| 巩义市| 磐安县| 武安市| 威远县| 建水县| 凤城市| 江川县| 新津县| 禹州市| 新巴尔虎右旗| 通江县| 丰县|