sponsored links

java程式設計師進階之路:maven專案構建神器來了

今天來給大家介紹一款專案構建神器——Maven,不僅能幫我們自動化構建,還能夠抽象構建過程,提供構建任務實現;它跨平臺,對外提供了一致的操作介面,這一切足以使它成為優秀的、流行的構建工具,從此以後,再也不用擔心專案搞崩了。

PS:為了能夠幫助更多的 Java 愛好者,已將《Java 程式設計師進階之路》開源到了 GitHub(本篇已收錄)。該專欄目前已經收穫了 675 枚星標,如果你也喜歡這個專欄,覺得有幫助的話,可以去點個 star,這樣也方便以後進行更系統化的學習:

github.com/itwanger/to…

每天看著 star 數的上漲我心裡非常的開心,希望越來越多的 Java 愛好者能因為這個開源專案而受益,而越來越多人的 star,也會激勵我繼續更新下去~

總結一下 Maven 的優點,主要有以下 3 點:

  • 依賴管理:Maven 能幫助我們解決軟體包依賴的管理問題,不再需要提交大量的 jar 包、引入第三方庫;
  • 規範目錄結構:Maven 標準的目錄結構有助於專案構建的標準化,透過配置 profile 還可以根據不同的環境(開發環境、測試環境,生產環境)讀取不同的配置檔案;
  • 方便整合:能夠整合在 IDE 中更方便使用。

一、安裝 Maven

由於 JDK 是 Maven 安裝的前置條件,所以請使用 java -version 確認是否已經安裝了 JDK:

java程式設計師進階之路:maven專案構建神器來了

我本人使用的是 macOS,所以可以有兩種安裝方式,一種官網下載,手動安裝;一種直接使用 brew 一鍵安裝

我們先介紹官網下載,手動安裝,該方式同樣適用於 Windows 系統,差別可參照 Maven 官網安裝教程:

maven.apache.org/install.htm…

1)一種官網下載,手動安裝

第一步,去官網下載 Maven 安裝包:

官網地址:maven.apache.org/download.cg…

java程式設計師進階之路:maven專案構建神器來了

很多初學者在官網下載的時候不知道選哪一個,這裡做一下簡單的介紹。

  • bin(binary)代表由 Java 原始檔編譯後的二進位制 class 檔案,src(source)代表Java 原始檔。
  • 一般情況下,選擇 bin 檔案進行安裝就 OK 了;如果你想自己編譯,可選 src 版本。
  • tar.gz 壓縮格式適用於 Unix 作業系統,zip 適用於 Windows 作業系統;但不是絕對的。

第二步,解壓下載的安裝包,複製該路徑:

java程式設計師進階之路:maven專案構建神器來了

  • bin 目錄:該包含了 Maven 執行的所有指令碼,用來配置 Java 命令,準備執行環境,然後執行 Java 命令。
  • boot 目錄:該目錄只包含了一個 plexus-classworlds-xxx-jar 檔案,該檔案是一個類載入器框架,相當於預設的 Java 類載入器,提供了更加豐富的語法以便配置,Maven 使用該載入器載入自己的類庫。
  • conf 目錄:該目錄包含了一個非常重要的檔案 settings.xml。可以直接修改該檔案,用來全域性定製 Maven 的行為;也可以複製該檔案到 ~/.m2/ 目錄下(~表示使用者目錄),修改該檔案可以在使用者範圍內定製 Maven 的行為。
  • lib 目錄:該目錄包含了Maven執行時所需要的 Java 類庫,包括Maven 依賴的第三方類庫,比如 slf4j-api.jar。

java程式設計師進階之路:maven專案構建神器來了

第三步,配置環境變數

開啟終端,輸入 vim ~/.bash_profile 命令開啟 bash_profile 檔案:

java程式設計師進階之路:maven專案構建神器來了

bash_profile 檔案用於配置環境變數和啟動程式,詳細介紹可參照:

www.cnblogs.com/kevingrace/…

在檔案中新增設定環境變數的命令:

export M2_HOME=/Users/maweiqing/cmower/save/apache-maven-3.8.3
export PATH=${PATH}:${M2_HOME}/bin
複製程式碼

java程式設計師進階之路:maven專案構建神器來了

儲存後退出,可以執行 source ~/.bash_profile 使配置生效:

java程式設計師進階之路:maven專案構建神器來了

第四步,檢視配置是否生效

輸入 mvn -v 命令,如果輸出以下內容,表示配置成功:

java程式設計師進階之路:maven專案構建神器來了

如未生效,可再開一個終端視窗嘗試 mvn -v 命令。

2)brew 一鍵安裝

第一步,使用 brew install maven 命令一鍵安裝,並自動配置環境變數

第二步,使用 mvn -v 命令檢視版本

二、Maven 配置檔案大盤點

Maven 是基於 POM(Project Object Model) 進行的,專案的所有配置都會放在 pom.xml 檔案中,包括專案的型別、名字,依賴關係,外掛定製等等。

<?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.itwanger</groupId>
    <artifactId>MavenDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>MavenDemo</name>
</project>
複製程式碼
  • 第一行是XML頭,指定了該xml文件的版本和編碼方式。
  • project 是根元素,聲明瞭一些POM相關的名稱空間及xsd元素。
  • modelVersion指定了當前POM的版本,對於Maven 3來說,值只能是4.0.0。
  • groupId定義了專案屬於哪個組織,通常是組織域名的倒序,比如說我的域名是 itwanger.com,所以groupId就是 com.itwanger。
  • artifactId定義了專案在組織中的唯一ID。
  • version指定了專案當前的版本,SNAPSHOT意為快照,說明該專案還處於開發中。
  • name 聲明瞭一個對於使用者更為友好的專案名稱。

groupId、artifactId和version這三個元素定義了一個專案的基本座標,在Maven的世界裡,任何的jar和pom都是以基於這些座標進行區分的。

<project>
...
<dependencies>
    <dependency>
        <groupId>實際專案</groupId>
     <artifactId>模組</artifactId>
     <version>版本</version>
     <type>依賴型別</type>
     <scope>依賴範圍</scope>
     <optional>依賴是否可選</optional>
     <!—主要用於排除傳遞性依賴-->
     <exclusions>
         <exclusion>
           <groupId>…</groupId>
          <artifactId>…</artifactId>
       </exclusion>
     </exclusions>
  </dependency>
<dependencies>
...
</project>
複製程式碼
  • dependencies 可以包含一個或者多個dependency元素,以宣告一個或者多個專案依賴。
  • grounpId、artifactId和version 組成了依賴的基本座標。
  • type 指定了依賴的型別,預設為 jar。
  • scope 指定了依賴的範圍(詳情見下面依賴範圍部分)。
  • optional 標記了依賴是否是可選的(詳情見下面依賴可選部分)。
  • exclusions 用來排除傳遞性依賴(詳情見下面依賴排除部分)。

依賴範圍有以下幾種:

  • compile,預設的依賴範圍,表示依賴需要參與當前專案的編譯,後續的測試、執行週期也參與其中,是比較強的依賴。
  • test,表示依賴僅僅參與測試相關的工作,包括測試程式碼的編譯和執行。比較典型的如 junit。
  • runntime,表示依賴無需參與到專案的編譯,不過後期的測試和執行需要其參與其中。
  • provided,表示打包的時候可以不用包進去,別的容器會提供。和 compile 相當,但是在打包階段做了排除的動作。
  • system,從參與程度上來說,和 provided 類似,但不透過 Maven 倉庫解析,可能會造成構建的不可移植,要謹慎使用。

java程式設計師進階之路:maven專案構建神器來了

關於傳遞性依賴

比如一個account-email專案為例,account-email有一個compile範圍的spring-code依賴,spring-code有一個compile範圍的commons-logging依賴,那麼commons-logging就會成為account-email的compile的範圍依賴,commons-logging是account-email的一個傳遞性依賴:

java程式設計師進階之路:maven專案構建神器來了

有了傳遞性依賴機制,在使用Spring Framework的時候就不用去考慮它依賴了什麼,也不用擔心引入多餘的依賴。Maven會解析各個直接依賴的POM,將那些必要的間接依賴,以傳遞性依賴的形式引入到當前的專案中。

關於依賴可選

java程式設計師進階之路:maven專案構建神器來了

專案中A依賴B,B依賴於X和Y,如果所有這三個的範圍都是compile的話,那麼X和Y就是A的compile範圍的傳遞性依賴,但是如果我想X、Y不作為A的傳遞性依賴,不給它用的話,可以按照下面的方式配置可選依賴:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itwanger</groupId>
    <artifactId>project-b</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.10</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</groupId>
            <version>8.4-701.jdbc3</version>
            <optional>true</optional>
        </dependency>
    </dependencies>
</project>
複製程式碼

關於依賴排除

有時候你引入的依賴中包含你不想要的依賴包,你想引入自己想要的,這時候就要用到排除依賴了,比如下圖中spring-boot-starter-web自帶了logback這個日誌包,我想引入log4j2的,所以我先排除掉logback的依賴包,再引入想要的包就行了。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.5.6</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 使用 log4j2 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
    <version>2.5.6</version>
</dependency>
複製程式碼

宣告exclustion的時候只需要groupId和artifactId,不需要version元素,因為groupId和artifactId就能唯一定位某個依賴。

三、Maven 倉庫

在 Maven 的術語中,倉庫是一個位置(place),專案中依賴的第三方庫以及外掛(可統稱為構件),都放在這裡。所有的 Maven 專案都可以共享這個倉庫,只需要根據依賴的座標,就可以在需要的時候找到倉庫中的依賴,並使用它們。

舉個例子,專案中使用了分頁外掛的依賴:

<dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.1.0</version>
</dependency>
複製程式碼

那麼它對應的倉庫路徑是這樣的:

java程式設計師進階之路:maven專案構建神器來了

倉庫可以以下幾種:

java程式設計師進階之路:maven專案構建神器來了

1)本地倉庫

當Maven在執行編譯或測試時,如果需要使用依賴檔案,它總是基於座標使用本地倉庫的依賴檔案。

預設情況下,不管是Window還是macOS,或者是 Linux,每個使用者都會在自己的使用者目錄下有一個路徑名為 .m2/repository/ 的倉庫目錄。

如果你想自定義本地倉庫目錄地址,可以編輯檔案~/.m2/settings.xml,設定localRepository元素的值為你想要的倉庫地址,例如:

<localRepository>/path/to/local/repo</localRepository>
複製程式碼

如果找不到 ~/.m2/settings.xml 的話,可以到 Maven 的安裝目錄(前文提到的 conf 目錄)下去複製。

2)遠端倉庫

預設情況下,本地倉庫是被註釋掉的,也就是空的,那麼就必須得給 Maven 配置一個可用的遠端倉庫,否則 Maven 在 build(構建)的時候就無法去下載依賴。

中央倉庫就是這樣一個可用的遠端倉庫,裡面包含了這個世界上絕大多數流行的開源 Java 類庫,以及原始碼、作者資訊、許可證資訊等等。

不過,預設的中央倉庫訪問速度比較慢,通常我們會選擇使用阿里的 Maven 遠端倉庫。

<repositories>
    <repository>
        <id>ali-maven</id>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
        </snapshots>
    </repository>
</repositories>
複製程式碼
  • repositories 可以包含一個或者多個repository元素,以宣告一個或者多個倉庫。
  • id,倉庫宣告的唯一id,需要注意的是,Maven自帶的中央倉庫使用的id為central,如果其他倉庫也使用了該id,就會覆蓋中央倉庫的配置。
  • url,指向了倉庫的地址。
  • releases和snapshots,用來控制Maven對於釋出版構件和快照版構件的下載許可權。
  • enabled子元素為 true 時表示可以從倉庫下載釋出版構件和快照版構件。
  • updatePolicy 子元素用來配置Maven從遠處倉庫檢查更新的頻率。
    • 預設值是daily,表示每天檢查一次;
    • 可選值 never 表示從不檢查;
    • 可選值always表示每次構建時檢查更新;
    • 可選值interval表示每隔X分鐘檢查一次更新(X為任意整數)。
  • checksumPolicy 子元素用來配置Maven檢查校驗的策略。在下載構件的時候,Maven會去校驗,如果校驗失敗,
    • 當checksumPolicy的值為預設的warn時,Maven會在執行構建時輸出警告資訊;
    • 值為fail 時,Maven遇到校驗錯誤就讓構建失敗;
    • 值為ignore時,Maven將完全忽略校驗。

搭建遠端倉庫的另外一個目的是方便部署我們自己的專案構件至遠端倉庫供其他團隊成員使用,這時候需要配置distributionManagement元素:

<distributionManagement>
        <repository>
            <id>releases</id>
            <name>public</name>
            <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
        </snapshotRepository>
</distributionManagement>
複製程式碼
  • repository表示釋出版本構件的倉庫。
  • snapshotRepository 表示快照版本(開發測試用)的倉庫。
  • 這兩個元素都需要配置id、name和url,id為遠端倉庫的唯一標識,name是為了方便閱讀,url表示倉庫的地址。

配置好了以後執行命令 mvn clean deploy,Maven就會將專案部署到對應的遠端倉庫。專案是快照還是釋出版本透過之前遠端倉庫配置項中的 releases 和 snapshots 來區分。

3)倉庫映象

如果倉庫X可以提供倉庫Y儲存的所有內容,那麼就可以認為X是Y的一個映象。通常我們會在 settings.xml 檔案中新增阿里雲映象:

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
複製程式碼

其中 mirrorOf 元素的可選項有:

  • <mirrorOf>*</mirrorOf>,匹配所有遠端倉庫。
  • <mirrorOf>external:*</mirrorOf>,匹配所有遠端倉庫,使用localhost的除外,使用 file:// 協議的除外。也就是說,匹配所有不在本機上的遠端倉庫。
  • <mirrorOf>repo1,repo2</mirrorOf>,匹配倉庫repo1和repo2,使用逗號分隔多個遠端倉庫。
  • <mirrorOf>*,!repo1<mirrorOf>,匹配所有遠端倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。

上例中 <mirrorOf>central</mirrorOf> 表示任何對於中央倉庫的請求都會轉至該映象。

4)私服

私服是一種特殊的遠端倉庫,它架設在區域網內中,私服代理廣域網上的遠端倉庫,供區域網內的Maven使用者使用。當Maven需要下載構件的時候,先從私服請求,如果私服上不存在該構件,則從外部的遠端倉庫下載,並快取到私服上。

私服有以下好處:

  • 節省外網訪問速度
  • 加速Maven構建
  • 提高穩定性,增強控制
  • 降低中央倉庫的負荷

5)倉庫服務搜尋

推薦 2 個提供倉庫搜尋服務的網站:

Sonatype Nexus:repository.sonatype.org/ MVNrepository:mvnrepository.com/

四、使用 Maven

1)Maven 常見命令

  • mvn clean:表示執行清理操作(會預設把target資料夾中的資料清理)。
  • mvn clean compile:表示先執行清理之後執行編譯,會將程式碼編譯到target資料夾中。
  • mvn clean test:執行清理和測試。
  • mvn clean package:執行清理和打包。
  • mvn clean install:執行清理和安裝,會將打好的包安裝到本地倉庫中,以便其他的專案可以呼叫。
  • mvn clean deploy:執行清理和釋出(釋出到私服上面)。

2)Maven 常用 POM 屬性

  • ${project.build.sourceDirectory}:專案的主原始碼目錄,預設為src/main/java/
  • ${project.build.testSourceDirectory}:專案的測試原始碼目錄,預設為 /src/test/java/
  • ${project.build.directory}:專案構建輸出目錄,預設為 target/
  • ${project.build.outputDirectory}:專案主程式碼編譯輸出目錄,預設為 target/classes/
  • ${project.build.testOutputDirectory}:專案測試程式碼編譯輸出目錄,預設為 target/testclasses/
  • ${project.groupId}:專案的 groupId.
  • ${project.artifactId}:專案的 artifactId.
  • ${project.version}:專案的 version,於 ${version} 等價
  • ${project.build.finalName}:專案打包輸出檔案的名稱,預設為${project.artifactId}${project.version}

3)Intellij IDEA 配置 Maven

java程式設計師進階之路:maven專案構建神器來了

4)Maven 常用外掛

外掛是Maven的核心功能,它允許在多個專案中重用通用的構建邏輯。外掛可用於:

  • 建立jar檔案,
  • 建立war檔案,
  • 編譯程式碼,
  • 單元測試程式碼,
  • 建立專案文件等。

常用的外掛有:

  • maven-antrun-plugin,讓使用者在 Maven 專案中執行 Ant 任務。使用者可以直接在該外掛的配置以 Ant 的方式編寫 Target,然後交給該外掛的 run 目標去執行。在一些由 Ant 往 Maven 遷移的專案中,該外掛尤其有用。此外當你發現需要編寫一些自定義程度很高的任務,同時又覺得 Maven 不夠靈活時,也可以以 Ant 的方式實現之。maven-antrun-plugin 的 run 目標通常與生命週期繫結執行。
  • maven-assembly-plugin,製作專案分發包,該分發包可能包含了專案的可執行檔案、原始碼、readme、平臺指令碼等等。maven-assembly-plugin 支援各種主流的格式如 zip、tar.gz、jar 和 war 等,具體打包哪些檔案是高度可控的,例如使用者可以按檔案級別的粒度、檔案集級別的粒度、模組級別的粒度、以及依賴級別的粒度控制打包,此外,包含和排除配置也是支援的。maven-assembly-plugin 要求使用者使用一個名為assembly.xml的元資料檔案來表述打包,它的 single 目標可以直接在命令列呼叫,也可以被繫結至生命週期。
  • maven-help-plugin,一個小巧的輔助工具,最簡單的help:system可以列印所有可用的環境變數和 Java 系統屬性。help:effective-pom和help:effective-settings最為有用,它們分別列印專案的有效 POM 和有效 settings,有效 POM 是指合併了所有父 POM(包括 Super POM)後的 XML,當你不確定 POM 的某些資訊從何而來時,就可以檢視有效 POM。
  • maven-javadoc-plugin,javadoc 外掛,將原始碼的 javadoc 釋出出去。


參考連結:

嘟嘟MD:tengj.top/2018/01/01/…
杭建:《Java 工程師修煉之道》
許曉斌:www.infoq.cn/article/201…

希望大家能在閱讀完本篇文章後對 Maven 有一個初步的瞭解和掌握,並將這些技能在專案的實戰中加以練習,以達到專案工程化的要求。

這是《Java 程式設計師進階之路》專欄的第 72 篇(記得去點個 star 哦)。該專欄風趣幽默、通俗易懂,對 Java 愛好者極度友好和舒適,內容包括但不限於 Java 基礎、Java 集合框架、Java IO、Java 併發程式設計、Java 虛擬機器、Java 企業級開發(SSM、Spring Boot)等核心知識點

github.com/itwanger/to…

java程式設計師進階之路:maven專案構建神器來了

讓我們一起成為更好的 Java 工程師吧!

原文連結:https://juejin.cn/post/7033652977973854244

如果覺得本文對你有幫助,記得一鍵三連支援下~

分類: 國際
時間: 2021-11-23

相關文章

Moto Guzzi公司送給自己100週年禮物 V100 Mandello 11月23日正式亮相

Moto Guzzi公司送給自己100週年禮物 V100 Mandello 11月23日正式亮相
摩圈簡報,猩摩來報 近期,國外摩托車製造商Moto Guzzi迎來了它創廠100週年的生日.有什麼比向自己推出一臺新的運動旅行車作為禮物更好的方式來慶祝它的 100 週年呢?所以在這個重要的時間裡,M ...

射手座♐️(11月23日~12月21日)

射手座♐️(11月23日~12月21日)
射手座詳情 跺著腳,貪婪地呼吸著大自然的自由空氣,送走了金色的秋天,又將迎受冬天的寒意,射手座的你已迫不及待地要出征到你所渴望的廣闊天地裡馳騁.這一座的人性格開朗,思想活躍,注重文化修養,同時又不忘放 ...

2021年西藏二級造價工程師考試時間11月27日

2021年西藏二級造價工程師考試時間11月27日
西藏自治區人力資源和社會保障廳已經發布了<關於西藏自治區2021年度二級造價工程師職業資格考試報名工作的通知>,從通知中我們可知2021年西藏二級造價工程師考試時間定於11月27日,請要參 ...

今日運勢,9 月 23 日:雙子座、巨蟹座、金牛座和其他星座

今日運勢,9 月 23 日:雙子座、巨蟹座、金牛座和其他星座
讓我們來看看今天的命理. 23號了,二加三一加四等於五!這門古老藝術的專家會說,這是所有已經到了合適階段的企業和舉措都準備好迎接創意爆發的時刻.不過,有些人甚至可能最終回到他們開始的地方! 白羊座(3 ...

9月23日,中美重開總領館?克里計劃再次訪華,美拒印日加入AUKUS

9月23日,中美重開總領館?克里計劃再次訪華,美拒印日加入AUKUS
澳大利亞撕毀560億歐元潛艇合同之後,法國方面極其憤怒,召回了駐美國和澳大利亞大使,外界分析馬克龍可能會採取進一步動作,不排除會退出北約.不過,拜登一通電話過後,馬克龍立刻改變了態度,法國駐美大使將會 ...

中遠海控(01919):股票期權激勵計劃首次授予期權將於10月8日-11月1日限制行權
智通財經APP訊,中遠海控(01919)公佈,公司股票期權激勵計劃首次授予期權已於2021年6月3日正式進入第1個行權期,有效行權期為2021年6月3日至2022年6月2日,目前處於行權階段. 202 ...

9月23日停機更新 長安賽年收官S25落子無悔正式開啟新賽季內容詳解

9月23日停機更新 長安賽年收官S25落子無悔正式開啟新賽季內容詳解
9月23日00:00-9月23日7:30正式服及搶先服停機更新.福利60鑽石+60銘文碎片. 一.王者峽谷 (一)打野體驗最佳化 1.野怪經濟提升 2. 野怪重新整理頻率調整 3.中路河道之靈調整 4 ...

宋亞東下一戰UFC確定!11月13日對陣胡里奧·阿爾塞

宋亞東下一戰UFC確定!11月13日對陣胡里奧·阿爾塞
宋亞東 VS 胡里奧·阿爾塞 麥克斯·霍洛威 VS 亞爾·羅德里格茲 傑西卡·艾 VS 安德莉婭·李 歐文斯·聖·普呂 VS 菲利普·林斯 本·羅斯威爾 VS 馬科斯·羅傑里奧·德·裡馬 武者網訊 中 ...

處女座本週收入呈現上升趨勢「9月23日~29日」

處女座本週收入呈現上升趨勢「9月23日~29日」
演員.星座女神.準了App創始人莫小奇繼續為我們講解每週星座! 白羊座 (3月21日-4月19日) 本週,部分人會參加團建.部門聚會,和他人有更多的交流. 下週在工作方面,合作的事情會遇到阻礙,可能是 ...

9月23日晚間滬深上市公司重大事項公告最新快遞
9月23日晚間,滬深兩市多家上市公司釋出公告,以下是重要公告彙總. 重大事項 海南海藥:信託產品到期未收回本金2億元 海南海藥(000566)9月23日晚間公告,2019年12月24日,公司購買了&q ...

9月23日晚間公告集錦:華夏幸福明日停牌 擬在政府的指導下與債權人進行溝通
9月23日晚間,滬深兩市多家上市公司釋出公告,供投資者參考: [重大事項] 華夏幸福:在省市政府的指導下公司擬與債權人就綜合性風險化解方案的相關內容進行溝通 股票將於明日起停牌 華夏幸福(600340 ...

誰幹的?9月23日,俄飛機墜毀;烏總統顧問遇襲,普京發言人表態

誰幹的?9月23日,俄飛機墜毀;烏總統顧問遇襲,普京發言人表態
一波未平,一波再起! 在這個變數橫生的世界上,沒有人能預測,明天和意外究竟哪一個會先來. 9月23日,正當聯合國大會如火如荼地進行之際,俄羅斯和烏克蘭各傳來了一個壞訊息,或令地緣政治格局再度生變. 訊 ...

9月23日國際糧價要聞一覽:我國與俄羅斯簽署牛肉進口協議

9月23日國際糧價要聞一覽:我國與俄羅斯簽署牛肉進口協議
1.據貿易商周三稱,孟加拉國家糧食採納部門舉行國際招標會,尋購5萬噸大米.招標截止日期定在10月4日.孟加拉舉行的另外一場5萬噸大米進口招標會於9月23日結束. 2.日本飼料加工商使用更多大米,美國農 ...

(最新國際原油價格資訊-每日定期原創釋出)9月23日市場行情

(最新國際原油價格資訊-每日定期原創釋出)9月23日市場行情
(最新國際原油價格資訊-每日定期原創釋出)2021年9月23日國際原油市場行情:美國海灣地區油氣生產恢復緩慢,美國原油庫存連續第七週下降,供應受限繼續支撐石油市場,國際油價連續第三天上漲,布倫特原油期 ...

1938年11月15日 侵華日軍轟炸銀川罪證
來源:銀川新聞網 1938年11月15日,侵華日軍轟炸銀川實時航拍的景象.該影像系抗日戰爭時期日本東京國際情報社1939年發行的<世界畫報>所刊登. 2021年2月10日,95歲的徐廉(右 ...

雪天鹽業:開源證券股份有限公司研究所、銀華基金管理股份有限公司等2家機構於9月23日調研我司
2021年10月11日雪天鹽業(600929)釋出公告稱:開源證券股份有限公司研究所張宇光,張曉鋒.銀華基金管理股份有限公司李宜璇,楊騰於2021年9月23日調研我司,本次調研由董事會秘書 劉少華,證 ...

新雪季 | 長白山國際度假區滑雪場將於11月13日開板

新雪季 | 長白山國際度假區滑雪場將於11月13日開板
經歷了國慶假期的連綿細雨 氣溫跌宕起伏中 也漸漸感受到了深秋的涼意 當每天清早霧氣覆蓋著整個山脈 心中總是在期待那場突如其來的大雪 希望它在某個時刻悄然而至 雪花落在肩頭,落在葉脈上 與深秋盛開的絢爛 ...

新車|有望11月18日上市,預售價格提前曝光?凌放HARRIER要來了

新車|有望11月18日上市,預售價格提前曝光?凌放HARRIER要來了
文:懂車帝原創 周桐 [懂車帝原創 產品] 隨著中文名稱正式釋出,一汽豐田凌放HARRIER再度成為外界關注的焦點.這款定位在皇冠-陸放與RAV4榮放之間的全新車型,未來將與途觀L.昂科威S.冠道等車 ...

預售價7-11萬元 北京U5 PLUS將於9月23日上市

預售價7-11萬元 北京U5 PLUS將於9月23日上市
日前,網通社從官方獲悉,北京U5 PLUS將於9月23日正式上市.新車在外觀及內飾方面改動較大,整體配置高於老款車型.值得一提的是,此前新車已開啟預訂,其預售區間7萬-11萬元. 外觀方面,北京U5 ...

湖南事業單位聯考啦!10月23日筆試
2021年湖南事業單位將搭上聯考列車?目前已經有好幾個公告參加10.23聯考,筆試時間均為10月23日,湖南中公教育特整理<2021湖南事業單位聯考公告彙總>供大家參考. 公告名稱 報名時 ...