六盘寡、nexus創(chuàng)建私服

微笑面對(duì)每一天,耶4榭8吞怠!咳咳下面的同學(xué)不要講話啦砌溺,開(kāi)始上課啦

study.jpg

這一章影涉,我們來(lái)講講私服的知識(shí),私服是maven的重要組件规伐,但它并不是maven內(nèi)部的核心概念蟹倾,它僅僅是一種衍生出來(lái)的特殊maven倉(cāng)庫(kù)
在前面的章節(jié)中已經(jīng)提到,使用私服可以起到如降低中央倉(cāng)庫(kù)負(fù)荷,節(jié)省外網(wǎng)帶寬鲜棠,加速maven構(gòu)建肌厨,自己部署構(gòu)建等作用
maven私服種類很多,流行的也有幾個(gè)岔留,但這里我就不一一做講解了夏哭,下面將主要對(duì)nexus私服做詳細(xì)介紹,其他私服的功能和nexus也是相似的献联,有機(jī)會(huì)可以自己下去了解一下
nexus是一款不錯(cuò)的倉(cāng)庫(kù)管理軟件,這里主要對(duì)nexus進(jìn)行講解

nexus安裝

  1. 下載nexus壓縮包(基于windows系統(tǒng))
    需要到官網(wǎng)下載nexus私服壓縮包何址,這里需要注意的一點(diǎn)是下載的壓縮包一定要是archive版的里逆,因?yàn)?code>professional版需要提供一個(gè)License,下面是下載地址
    https://support.sonatype.com/hc/en-us/articles/218238798
    雖然現(xiàn)在nexus已經(jīng)發(fā)布到3x版本了,但是我還是比較喜歡用2xextjs界面用爪,所以這里我下載的是2.14版本的nexus oss
  2. 安裝nexus服務(wù)
    將下載的壓縮包解壓到指定目錄原押,解壓后共有兩個(gè)文件夾
    圖片1.png

    nexus-2.14.3-02該目錄包含了nexus運(yùn)行所需的文件,比如啟動(dòng)腳本偎血,依賴等
    sonatype-work該目錄是運(yùn)行時(shí)目錄诸衔,用于生成運(yùn)行時(shí)所需要的配置文件,日志文件倉(cāng)庫(kù)文件等
    nexus-2.14.3-02該目錄包含了nexus運(yùn)行所需的文件颇玷,比如啟動(dòng)腳本笨农,依賴等
    sonatype-work該目錄是運(yùn)行時(shí)目錄,用于生成運(yùn)行時(shí)所需要的配置文件帖渠,日志文件倉(cāng)庫(kù)文件等
    通過(guò)管理員命令行工具進(jìn)入到nexus安裝目錄/nexus-2.14.3-02/bin執(zhí)行
    nexus.bat install 安裝系統(tǒng)服務(wù),完成后執(zhí)行nexus.bat start命令啟動(dòng)nexus服務(wù)谒亦,或者在服務(wù)管理界面(win+R調(diào)出運(yùn)行面板->services.msc進(jìn)入windows服務(wù)控制臺(tái)),這時(shí)可以在控制臺(tái)中看到nexus服務(wù)已經(jīng)生成
    圖片2.png

    當(dāng)然nexus.bat其中提供了幾個(gè)常用的命令
    install安裝nexus服務(wù)
    uninstall卸載nexus服務(wù)
    start啟動(dòng)nexus服務(wù)
    stop停止nexus服務(wù)
    restart重啟nexus服務(wù)
  3. 登錄到nexus控制臺(tái)
    nexus服務(wù)啟動(dòng)完成后,我們可以通過(guò)瀏覽器輸入http://localhost:8081/nexus訪問(wèn)nexus控制臺(tái)空郊,可以通過(guò)管理員(admin/admin123)用戶登錄到控制臺(tái)
    運(yùn)行后份招,下面將會(huì)對(duì)控制臺(tái)各個(gè)功能模塊進(jìn)行講解,并提供一個(gè)從項(xiàng)目代碼到倉(cāng)庫(kù)的完整配置過(guò)程

nexus倉(cāng)庫(kù)與倉(cāng)庫(kù)組(repository)

作為maven的倉(cāng)庫(kù)服務(wù)軟件狞甚,倉(cāng)庫(kù)自然是nexus最重要的概念锁摔,nexus包含幾種類型的倉(cāng)庫(kù):代理倉(cāng)庫(kù),宿主倉(cāng)庫(kù)和倉(cāng)庫(kù)組等
nexus內(nèi)置倉(cāng)庫(kù)
打開(kāi)nexus控制臺(tái)左側(cè)Repositories可以看到maven中已經(jīng)創(chuàng)建了幾種倉(cāng)庫(kù)

圖片3.png

Central該倉(cāng)庫(kù)代理中央倉(cāng)庫(kù)哼审,其策略為release,因此只會(huì)下載中央倉(cāng)庫(kù)的發(fā)布版本
Releases這是一個(gè)策略為release的宿主倉(cāng)庫(kù)谐腰,用來(lái)部署組織內(nèi)部的發(fā)布版本構(gòu)件
Snapshots這是一個(gè)策略為snapshots的宿主倉(cāng)庫(kù),用來(lái)部署組織內(nèi)部的快照版本構(gòu)件
3rd party這是一個(gè)策略為release的宿主倉(cāng)庫(kù)棺蛛,用來(lái)部署無(wú)法從遠(yuǎn)程倉(cāng)庫(kù)下載的第三方發(fā)布版本構(gòu)件
Apache Snapshots這是一個(gè)策略為snapshots的代理倉(cāng)庫(kù)怔蚌,用來(lái)專門(mén)代理apache maven倉(cāng)庫(kù)的快照版本構(gòu)件
Public Repositories倉(cāng)庫(kù)組將上述所有策略為release的倉(cāng)庫(kù)聚合并通過(guò)一致性的地址提供服務(wù),當(dāng)然這里可以配置將倉(cāng)庫(kù)加入到組中
上面的這些倉(cāng)庫(kù)是如何被使用的呢旁赊?
舉個(gè)例子桦踊,項(xiàng)目X依賴于很多流行的開(kāi)源類庫(kù)如junit,這些構(gòu)件都可以從中央倉(cāng)庫(kù)獲取终畅,因此central代理倉(cāng)庫(kù)就會(huì)被用來(lái)代理中央倉(cāng)庫(kù)籍胯,并從中央倉(cāng)庫(kù)下載指定依賴并緩存到私服中竟闪,X項(xiàng)目還依賴了Oraclejdbc驅(qū)動(dòng),由于版權(quán)因素杖狼,無(wú)法從公共倉(cāng)庫(kù)中獲取炼蛤,因此公司管理員將其部署到3rd party倉(cāng)庫(kù)中供X使用,X項(xiàng)目的快照版本構(gòu)件成功后會(huì)被部署到Snapshots倉(cāng)庫(kù)供其他小組使用蝶涩,當(dāng)X發(fā)布正式版本的時(shí)候理朋,其構(gòu)件將會(huì)發(fā)布到Releases倉(cāng)庫(kù)中,由于X項(xiàng)目用到了很多倉(cāng)庫(kù)绿聘,為每一個(gè)倉(cāng)庫(kù)聲明配置又很麻煩嗽上,所以可以統(tǒng)一使用倉(cāng)庫(kù)組Public RepositoriesPublic Snapshots Repositories

maven倉(cāng)庫(kù)分類的概念

下圖更直觀的展現(xiàn)了代理倉(cāng)庫(kù)、宿主倉(cāng)庫(kù)熄攘、倉(cāng)庫(kù)組他們之間的關(guān)系


maven倉(cāng)庫(kù)間聯(lián)系.png

創(chuàng)建宿主倉(cāng)庫(kù)
點(diǎn)擊左側(cè)Repositories->Add->Hosted Repositories就會(huì)出現(xiàn)一個(gè)表單

創(chuàng)建宿主倉(cāng)庫(kù).png

創(chuàng)建宿主倉(cāng)庫(kù)2.png

Repository Policy屬性兽愤,指定倉(cāng)庫(kù)的發(fā)布類型有Snapshot,Release兩種
Deployment Policy屬性,默認(rèn)是Disable Redeploy挪圾,也就是不允許部署浅萧,如果需要部署則需要改為Allow Redeploy,不然項(xiàng)目發(fā)布時(shí)會(huì)報(bào)錯(cuò)
Allow File Browsing屬性,是否允許瀏覽倉(cāng)庫(kù)中的內(nèi)容哲思,一般為true, 每一個(gè)倉(cāng)庫(kù)創(chuàng)建完成后都會(huì)有一個(gè)Browse Storage洼畅,在其中以樹(shù)形方式羅列了當(dāng)前倉(cāng)庫(kù)的存儲(chǔ)文件內(nèi)容
Include in Search屬性,表示是否對(duì)該倉(cāng)庫(kù)進(jìn)行索引并提供搜索服務(wù)也殖,一般為true
Publish URL屬性土思,用來(lái)控制是否通過(guò)url提供服務(wù),如果選false,當(dāng)訪問(wèn)該倉(cāng)庫(kù)時(shí)會(huì)得到http 404 Not Found錯(cuò)誤
Not Found Cache TTL表示當(dāng)一個(gè)文件沒(méi)有找到后忆嗜,緩存這一不存在信息的時(shí)間己儒,默認(rèn)值為1440分鐘內(nèi)(也就是一天),在規(guī)定的時(shí)間內(nèi)如果nexus再次得到該文件的請(qǐng)求捆毫,那么它將直接返回不存在信息

創(chuàng)建nexus代理倉(cāng)庫(kù)

創(chuàng)建代理倉(cāng)庫(kù).png

創(chuàng)建代理倉(cāng)庫(kù)2.png

創(chuàng)建代理倉(cāng)庫(kù)3.png

前面的參數(shù)和宿主倉(cāng)庫(kù)一致闪湾,這里我只強(qiáng)調(diào)代理倉(cāng)庫(kù)的一些特定參數(shù)
Remote Storage Location設(shè)置被代理的遠(yuǎn)程倉(cāng)庫(kù)地址
Download Remote Indexes是否下載遠(yuǎn)程倉(cāng)庫(kù)的index索引文件,下載索引后即使倉(cāng)庫(kù)中沒(méi)有緩存指定的依賴绩卤,也可以在nexus中搜索得到依賴pom
Checksum Policy設(shè)置當(dāng)依賴校驗(yàn)出錯(cuò)時(shí)的處理方式途样,可以設(shè)置忽略、記錄警告信息濒憋,拒絕下載
Artifact Max Age表示構(gòu)件緩存的時(shí)間何暇,對(duì)于release版本來(lái)說(shuō)為-1,表示一經(jīng)下載就一直保存凛驮,對(duì)于snapshots來(lái)說(shuō)裆站,每隔一天就需要重新緩存代理構(gòu)件
Metadata Max Age表示元配置文件的緩存時(shí)間

創(chuàng)建nexus倉(cāng)庫(kù)組

倉(cāng)庫(kù)組創(chuàng)建.png
倉(cāng)庫(kù)組創(chuàng)建2.png

倉(cāng)庫(kù)組并不是一個(gè)實(shí)實(shí)在在存在的東西,而是一個(gè)虛擬出來(lái)的東西,它并沒(méi)有ReleaseSnapshot之分宏胯,倉(cāng)庫(kù)組中包含的倉(cāng)庫(kù)順序決定了倉(cāng)庫(kù)組遍歷所含倉(cāng)庫(kù)的次序羽嫡,最好將常用的倉(cāng)庫(kù)放在前面

nexus索引與構(gòu)件搜索

nexus中為了能夠?qū)}(cāng)庫(kù)中的構(gòu)件進(jìn)行搜索服務(wù),需要我們將倉(cāng)庫(kù)配置中的Download Remote indexes設(shè)置為true,當(dāng)修改了這個(gè)設(shè)置后肩袍,我們可以點(diǎn)擊左側(cè)Scheduled Tasks查看當(dāng)前任務(wù)進(jìn)度情況
當(dāng)完成索引的下載之后杭棵,我們可以在倉(cāng)庫(kù)的Browser Storage選項(xiàng)卡中查看當(dāng)前倉(cāng)庫(kù)的索引結(jié)構(gòu),然后我們就可以在左側(cè)導(dǎo)航欄的Archive Search輸入框中搜索我們需要的構(gòu)件了

倉(cāng)庫(kù)搜索.png

倉(cāng)庫(kù)搜索.png

nexus提供了幾種搜索方式氛赐,常用的如keyword search, GAV Search(用戶通過(guò)設(shè)置groupid魂爪,artifactId,version)進(jìn)行搜索操作

倉(cāng)庫(kù)搜索.png

部署構(gòu)建到nexus私服中

nexus提供了兩種方式將構(gòu)建部署到私服中,一種是通過(guò)maven自動(dòng)部署鹰祸,需要借助distributeMangement,另一種是直接上傳jar包
通過(guò)distributeManagement自動(dòng)部署構(gòu)件
在日常開(kāi)發(fā)中甫窟,我們可以將項(xiàng)目的snapshot發(fā)布到項(xiàng)目snapshot倉(cāng)庫(kù)中,發(fā)布版發(fā)布到release倉(cāng)庫(kù)中蛙婴,這需要在項(xiàng)目pom中做一些手腳
下面是mvn-study項(xiàng)目的配置

<distributionManagement>
  <repository>
    <id>mvn-study-releases</id>
    <name>Mvn Study Project Release Repository</name>
    <layout>default</layout>
    <url>http://localhost:8081/nexus/content/repositories/mvn-study-releases/</url>
  </repository>
  <snapshotRepository>
    <id>mvn-study-snapshots</id>
    <name>Mvn Study Project Releases Repository</name>
    <layout>default</layout>
    <url>http://localhost:8081/nexus/content/repositories/mvn-study-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

如果給定的倉(cāng)庫(kù)設(shè)置了訪問(wèn)權(quán)限,比如mvn-study該項(xiàng)目建立的snapshot,只有mvn-study-deployer角色有操作權(quán)限尔破,所以我們還需要為其添加權(quán)限街图,這需要在.m2/settings.xml中添加訪問(wèn)權(quán)限:

<server>
      <id>mvn-study-releases</id>
      <username>zhenlian</username>
      <password>123456</password>
    </server>
    <server>
      <id>mvn-study-snapshots</id>
      <username>zhenglian</username>
      <password>123456</password>
    </server>

手動(dòng)上傳jar包到倉(cāng)庫(kù)

這是比較傳統(tǒng)的一種方式,比如我們?cè)诠矀}(cāng)庫(kù)中無(wú)法找到的第三方依賴懒构,可以通過(guò)此方法上傳到私服中餐济,maven3中,只有release倉(cāng)庫(kù)允許用戶上傳依賴
在倉(cāng)庫(kù)的配置項(xiàng)中胆剧,有一個(gè)artifact upload選項(xiàng)頁(yè)

手動(dòng)上傳構(gòu)建.png

我們需要添加GAV Definition,也就是當(dāng)前jar的坐標(biāo)信息絮姆,然后上傳給定的依賴jar

nexus權(quán)限管理

在組織中使用nexus往往會(huì)有一些權(quán)限要求,例如只有管理員才能配置nexus,只有某些團(tuán)隊(duì)成員才能部署構(gòu)件

nexus訪問(wèn)控制模型

nexus是基于權(quán)限(privileges)做訪問(wèn)控制的秩霍, 服務(wù)器的每一個(gè)資源都有相應(yīng)的權(quán)限來(lái)控制篙悯,這些權(quán)限的分發(fā)又是通過(guò)角色來(lái)實(shí)現(xiàn)的,用戶可以被賦予多個(gè)角色铃绒,角色也可以配置多個(gè)權(quán)限鸽照,角色同時(shí)還可以包含其他角色

權(quán)限管理

nexus默認(rèn)創(chuàng)建了三個(gè)用戶:
admin擁有對(duì)nexus的完全控制,密碼為admin123
deployment可以對(duì)倉(cāng)庫(kù)內(nèi)容瀏覽颠悬、搜索矮燎、上傳、部署赔癌,但是無(wú)法配置nexus
anonymous只能瀏覽和搜索倉(cāng)庫(kù)诞外,但是不能下載
nexus中同時(shí)預(yù)定義了一些常用且重要的角色:
UI:Basic UI Privileges包含對(duì)nexus界面必須的最基本權(quán)限
UI:Repository Browser包含瀏覽倉(cāng)庫(kù)頁(yè)面所需要的權(quán)限
UI:Search包含擁有快速訪問(wèn)搜索欄以及搜索頁(yè)面所需要的權(quán)限
Repo: all repositories(read)給予用戶讀取所有倉(cāng)庫(kù)的權(quán)限
Repo: all repositories(full control)給予用戶完全控制所有倉(cāng)庫(kù)內(nèi)容的權(quán)限

至此nexus的一些常用知識(shí)也就介紹完了,下面是一個(gè)實(shí)際項(xiàng)目配置方式講解

項(xiàng)目實(shí)戰(zhàn)

需求:

  1. 設(shè)置所有項(xiàng)目都從私服中下載構(gòu)件(也需要屏蔽對(duì)中央倉(cāng)庫(kù)的訪問(wèn))
  2. 為項(xiàng)目單獨(dú)創(chuàng)建倉(cāng)庫(kù) release,snapshot版本分別對(duì)應(yīng)灾票,同時(shí)只允許該項(xiàng)目小組的人員對(duì)該項(xiàng)目倉(cāng)庫(kù)有操作權(quán)限
    解決方式:
  3. nexus控制臺(tái)添加Public All Repositories分組峡谊,將包含所有Release/Snapshot倉(cāng)庫(kù),主要是為了后面鏡像轉(zhuǎn)發(fā)所有請(qǐng)求,同時(shí)為項(xiàng)目創(chuàng)建Release,Snapshot倉(cāng)庫(kù)
創(chuàng)建項(xiàng)目倉(cāng)庫(kù).png
  1. 項(xiàng)目pom中配置部署信息,主要是為了方便部署項(xiàng)目到nexus
<distributionManagement>
    <repository>
      <id>mvn-study-releases</id>
      <name>Mvn Study Project Release Repository</name>
      <layout>default</layout>
      <url>http://localhost:8081/nexus/content/repositories/mvn-study-releases/</url>
    </repository>
    <snapshotRepository>
      <id>mvn-study-snapshots</id>
      <name>Mvn Study Project Releases Repository</name>
      <layout>default</layout>
      <url>http://localhost:8081/nexus/content/repositories/mvn-study-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  1. 設(shè)置maven配置文件settings.xml,屏蔽中央倉(cāng)庫(kù)訪問(wèn)靖苇, 將所有請(qǐng)求轉(zhuǎn)發(fā)到私服席噩,并設(shè)置指定倉(cāng)庫(kù)的訪問(wèn)權(quán)限
<!--設(shè)置項(xiàng)目倉(cāng)庫(kù)訪問(wèn)權(quán)限,與項(xiàng)目中引用的倉(cāng)庫(kù)對(duì)應(yīng)-->
<servers>
  <server>
      <id>mvn-study-releases</id>
      <username>zhenlian</username>
      <password>123456</password>
    </server>
    <server>
      <id>mvn-study-snapshots</id>
      <username>zhenglian</username>
      <password>123456</password>
    </server>
</servers>

<!--將所有請(qǐng)求轉(zhuǎn)發(fā)到私服 -->
<mirrors>
    <mirror>
      <id>nexus</id>
      <name>Local Nexus Mirror</name>
  <url>http://localhost:8081/nexus/content/groups/public-all/</url>
      <mirrorOf> * </mirrorOf>
    </mirror>
</mirrors>

<!--覆蓋對(duì)中央倉(cāng)庫(kù)的訪問(wèn)-->
<profiles>
    <!--這里配置倉(cāng)庫(kù)覆蓋中央倉(cāng)庫(kù)-->
    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>central</id>
<!--此時(shí)的url已經(jīng)沒(méi)用了贤壁,因?yàn)檎?qǐng)求被mirror轉(zhuǎn)發(fā)到私服了-->
                <url>http://central/</url>
                <layout>default</layout>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
      </repositories>
      <pulginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Nexus</name>
            <url>http://central</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
      </pulginRepositories>
</profile>
</profiles>
<!--啟動(dòng)nexus本機(jī)倉(cāng)庫(kù)-->
 <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>

這里我要啰嗦兩句悼枢,剛開(kāi)始我在實(shí)際部署項(xiàng)目時(shí)總是遇到Return Code 400Bad Request錯(cuò)誤脾拆,檢查了一下倉(cāng)庫(kù)配置馒索,是忽略了在創(chuàng)建Mvn Study Snapshot Repository時(shí)Deployment Policy(Allow Redeploy) Repository Policy(Snapshot)
好了,今天就到這里啦名船,0:47绰上,又搞到這么晚,趕緊睡覺(jué)為明天黑色周五做準(zhǔn)備G铡r诳椤!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迷扇,一起剝皮案震驚了整個(gè)濱河市百揭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜓席,老刑警劉巖器一,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厨内,居然都是意外死亡祈秕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)雏胃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)请毛,“玉大人,你說(shuō)我怎么就攤上這事丑掺』裼。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵街州,是天一觀的道長(zhǎng)兼丰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)唆缴,這世上最難降的妖魔是什么鳍征? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮面徽,結(jié)果婚禮上艳丛,老公的妹妹穿的比我還像新娘匣掸。我一直安慰自己,他們只是感情好氮双,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布碰酝。 她就那樣靜靜地躺著,像睡著了一般戴差。 火紅的嫁衣襯著肌膚如雪送爸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天暖释,我揣著相機(jī)與錄音袭厂,去河邊找鬼。 笑死球匕,一個(gè)胖子當(dāng)著我的面吹牛纹磺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亮曹,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼橄杨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了照卦?” 一聲冷哼從身側(cè)響起讥珍,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窄瘟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體趟卸,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹄葱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锄列。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片图云。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邻邮,靈堂內(nèi)的尸體忽然破棺而出竣况,到底是詐尸還是另有隱情,我是刑警寧澤筒严,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布丹泉,位于F島的核電站,受9級(jí)特大地震影響鸭蛙,放射性物質(zhì)發(fā)生泄漏摹恨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一娶视、第九天 我趴在偏房一處隱蔽的房頂上張望晒哄。 院中可真熱鬧睁宰,春花似錦、人聲如沸寝凌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)较木。三九已至红符,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劫映,已是汗流浹背违孝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泳赋,地道東北人雌桑。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像祖今,于是被迫代替她去往敵國(guó)和親校坑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容