国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Maven——SDK中的構建范圍,構建插件,構建參數(shù)說明

這篇具有很好參考價值的文章主要介紹了Maven——SDK中的構建范圍,構建插件,構建參數(shù)說明。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Maven 依賴使用注意

封裝 Maven SDK 的 Dependency 時,需要注意以下幾點:

版本控制:確保所依賴的 SDK 版本與當前應用程序的其他依賴項兼容,并在 pom.xml 文件中指定正確的版本號。

穩(wěn)定性:使用經(jīng)過穩(wěn)定測試和驗證的SDK,并避免使用不穩(wěn)定或已棄用的版本。

可靠性:確保所依賴的 SDK 來源可靠,并且可以隨時獲取到。

兼容性:考慮到不同操作系統(tǒng)、JVM 和其他環(huán)境的差異,確保所依賴的 SDK 在目標平臺上可用并兼容。

文檔說明:提供明確的文檔說明,包括如何使用該 SDK,以及在遇到常見問題或錯誤時如何解決。

發(fā)布方式:選擇合適的發(fā)布方式,例如將封裝后的 SDK 發(fā)布到 Maven 倉庫,方便其他項目進行依賴管理。

自動化測試:編寫自動化測試來確保所依賴的 SDK 行為符合預期,并且當 SDK 更新時能夠迅速發(fā)現(xiàn)并修復問題。

Maven 構建依賴范圍

在 Maven 中,dependency scope 的設置決定了依賴庫在不同構建階段的使用范圍和生命周期。下面是各個 dependency scope 的具體作用:

  1. compile(默認依賴范圍):表示該依賴項需要被包含在項目的構建路徑中,同時也需要在運行時被加載。

  2. provided:表示該依賴項需要在運行時被加載,但是在編譯和打包階段不需要被包含在構建路徑中,因為這些依賴項通常由容器或運行時環(huán)境提供,例如 Java Servlet API。

  3. runtime:表示該依賴項需要在運行時被加載,但在編譯階段不需要包含在構建路徑中。

  4. test:表示該依賴項只在測試時需要被加載,在編譯和打包階段不需要被包含在構建路徑中。

  5. system:表示該依賴項在本地系統(tǒng)中已經(jīng)存在,需要手動指定其路徑來加載依賴項。

  6. import:表示該依賴項的作用是將一個 Maven 項目的依賴項傳遞給另一個 Maven 項目。

當開發(fā)SDK時,需要特別注意依賴的作用域,以確保它們不會影響父依賴中的依賴關系。
通常建議將指定的依賴庫的 scope 設為 “provided”,以確保其不會影響父依賴庫中的傳遞依賴關系圖。

沖突的主要原因

Maven 項目依賴關系沖突的主要原因是來自不同依賴庫的同一依賴的版本差異。例如,如果項目中同時引入了 A 和 B 兩個依賴庫,且這兩個庫都依賴了 C 庫,A 依賴 C 版本為 1.0.0,而 B 依賴 C 版本為 2.0.0,則在 Maven 自動解決依賴關系時,可能會選擇其中一個版本作為最終解決方案,導致另一個依賴庫無法正常工作,或者產(chǎn)生不穩(wěn)定的行為。這種問題通常稱為「依賴沖突」(Dependency Conflict)。

為了解決依賴沖突問題,Maven 提供了一套依賴管理機制,包括依賴范圍(Scope)、依賴排除(Exclusion)、依賴傳遞(Dependency Mediation)等。其中,依賴范圍用于限定依賴庫在不同階段(如編譯、測試、運行)的使用范圍;依賴排除用于排除依賴庫中的某些依賴項;依賴傳遞用于解決依賴沖突,它通過在依賴庫之間建立依賴樹,遞歸查找并選擇合適的版本,以滿足所有依賴的需求。

Maven構建插件

			<!--

            - <dependencyConvergence>
                標簽表示檢查一個項目中的依賴是否收斂,即是否存在相同的依賴但版本號不同的情況,如果存在就會給出警告或錯誤提示。
                這個標簽主要用于確保項目的依賴版本一致,避免可能出現(xiàn)的沖突或錯誤。
            - <requireReleaseDeps>
                標簽表示強制要求項目的依賴必須是已經(jīng)發(fā)布的穩(wěn)定版本,不能使用任何快照版本或開發(fā)中版本。
                這個標簽主要用于確保項目的依賴是穩(wěn)定和可靠的,避免可能出現(xiàn)的不穩(wěn)定或錯誤。
            - <requireUpperBoundDeps>
                標簽表示強制要求項目的依賴必須有一個明確的上限版本號,不能使用類似于 1.0.+ 這樣的通配符版本號。
                這個標簽主要用于確保項目的依賴是可控的,避免可能出現(xiàn)的版本不清晰或沖突的情況。

            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>3.6.3</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>1.8</version>
                                </requireJavaVersion>
                                <dependencyConvergence />
                                <requireReleaseDeps />
                                <requireUpperBoundDeps />
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

插件主要解決問題

The Maven Enforcer Plugin is used to enforce certain rules and constraints on Maven projects to ensure their correctness and consistency. It provides a set of pre-defined rules that can be configured and executed during the build process to check various aspects of the project, such as the version of Java, the presence of certain files, and the validity of dependencies.

Some of the common problems that the Maven Enforcer Plugin can solve include:

  • Dependency conflicts: Enforce a specific version of a dependency to avoid conflicts with other dependencies.
  • Unsupported Java version: Enforce a specific version of Java to ensure that the project is compatible with the targeted platform.
  • Missing files or resources: Enforce the presence of required files or resources to ensure that the project can be built and run correctly.
  • Inconsistent configuration: Enforce consistent configuration across different modules or components of the project to avoid compatibility issues.

Overall, the Maven Enforcer Plugin helps to improve the quality and stability of Maven projects by enforcing best practices and standards.

Example

SDK應用工程

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.gee.maven</groupId>
    <artifactId>mavenEnforcerExample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mavenEnforcerExample</name>
    <description>mavenEnforcerExample</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>maven-sdk</artifactId>
            <version>1.0-0</version>
        </dependency>

    </dependencies>


    <repositories>
        <repository>
            <id>aliyunmaven</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!--

            - <dependencyConvergence>
                標簽表示檢查一個項目中的依賴是否收斂,即是否存在相同的依賴但版本號不同的情況,如果存在就會給出警告或錯誤提示。
                這個標簽主要用于確保項目的依賴版本一致,避免可能出現(xiàn)的沖突或錯誤。
            - <requireReleaseDeps>
                標簽表示強制要求項目的依賴必須是已經(jīng)發(fā)布的穩(wěn)定版本,不能使用任何快照版本或開發(fā)中版本。
                這個標簽主要用于確保項目的依賴是穩(wěn)定和可靠的,避免可能出現(xiàn)的不穩(wěn)定或錯誤。
            - <requireUpperBoundDeps>
                標簽表示強制要求項目的依賴必須有一個明確的上限版本號,不能使用類似于 1.0.+ 這樣的通配符版本號。
                這個標簽主要用于確保項目的依賴是可控的,避免可能出現(xiàn)的版本不清晰或沖突的情況。

            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>3.6.3</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>1.8</version>
                                </requireJavaVersion>
                                <dependencyConvergence />
                                <requireReleaseDeps />
                                <requireUpperBoundDeps />
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>





        </plugins>



    </build>

</project>

SDK工程


<?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>org.example</groupId>
    <artifactId>maven-sdk</artifactId>
    <version>1.0-0</version>
    <name>${project.artifactId}</name>
    <description>Gee would like to happy with you</description>
    <packaging>jar</packaging>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <licenses>
        <license>
            <name>Apache 2</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>gee</id>
            <name>gee</name>
            <email>green.gee.lu(at)gmail.com</email>
            <roles>
                <role>Tech Leader</role>
                <role>Developer</role>
                <role>CI/SCM Engineer</role>
            </roles>
            <timezone>+8</timezone>
            <url>https://github.com/ciertou</url>
        </developer>
    </developers>

    <dependencies>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.70</version>
            <scope>provided</scope>
        </dependency>


    </dependencies>

</project>

maven 中的生命周期

Maven 中的生命周期是構建過程中的一系列階段,包括清理、編譯、測試、打包、部署等。Maven 的生命周期分為三個階段:clean、default 和 site。

clean 階段包含了與項目清理相關的步驟,例如刪除 target 目錄等。

default 階段包含了項目構建的主要步驟,包括編譯、測試、打包、安裝等。

site 階段包含了生成項目站點的相關步驟,例如生成項目文檔、測試報告等。

Maven 的生命周期是自動化的,用戶無需手動執(zhí)行各個階段。Maven 使用插件來完成各個階段的任務,用戶只需要在 pom.xml 文件中配置需要的插件和參數(shù)即可。

例如,要在項目中編譯 Java 代碼,可以在 pom.xml 文件中配置 Maven Compiler Plugin:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

該插件會在 default 階段的 compile 階段執(zhí)行,自動編譯源代碼。文章來源地址http://www.zghlxwxcb.cn/news/detail-471236.html

到了這里,關于Maven——SDK中的構建范圍,構建插件,構建參數(shù)說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Docker】使用docker-maven-plugin插件構建發(fā)布推鏡像到私有倉庫

    【Docker】使用docker-maven-plugin插件構建發(fā)布推鏡像到私有倉庫

    本文描述了在Spring Boot項目中通過docker-maven-plugin插件把項目推送到私有docker倉庫中,隨后拉取倉庫中的項目用docker run運行項目。作者自行構建,質(zhì)量有保證。 1、要想使用 docker-maven-plugin ,需要在 pom.xml 中添加該插件; 注:注意下db:3306 2、我們構建鏡像之前需要先將項目打包

    2024年02月15日
    瀏覽(14)
  • 構建SpringBoot工程時找不到插件“spring-boot-maven-plugin”

    構建SpringBoot工程時找不到插件“spring-boot-maven-plugin”

    目錄 一、找不到插件“spring-boot-maven-plugin” 二、再次啟動時,又發(fā)現(xiàn)報錯 ????????Unable to find a single main class from the following candidates [com.itheima.Application, com.example.springboot01.Springboot01Application]上面報錯的意思是,有多個App類,它不知用哪個 ?三、把該插件打包后,在jar包的

    2024年02月07日
    瀏覽(133)
  • Jenkins 利用Build With Parameters 插件實現(xiàn)選擇參數(shù)構建

    Jenkins 利用Build With Parameters 插件實現(xiàn)選擇參數(shù)構建

    jenkins是CI/CD中部署時候一個重要工具,可以按照我們需求進行配置一些編譯打包測試工作,有些是全自動化的,有些需要進行手動參數(shù)進行觸發(fā)。今天給大家分享一下Jenkins使用Build With Parameters插件,實現(xiàn)外置參數(shù)進行觸發(fā)job。 作者:良知猶存 轉(zhuǎn)載授權以及圍觀:歡迎關注微

    2024年02月12日
    瀏覽(35)
  • Java中的Maven Shade插件是什么?

    Maven Shade插件是一個非常有用的Maven插件,它可以幫助你在構建項目時打包所有依賴項,并將其打包到一個單獨的JAR文件中。這對于在構建過程中使用多個依賴項的項目非常有用,因為它可以讓你避免在每個依賴項中都包含所有依賴項,從而減少構建過程中的開銷。 在Java中,

    2024年02月13日
    瀏覽(20)
  • 使用cmake編譯opencv過程中的可選參數(shù)說明

    使用cmake編譯opencv過程中的可選參數(shù)說明

    opencv版本:4.5.5 通過源碼編譯opencv時,cmake可以帶有很多可選參數(shù),這里對這些可選參數(shù)進行說明。 配置選項可以通過幾種不同的方式設置: 命令行:cmake-Doption=value… 初始緩存文件:cmake-C my_options.txt… 通過Cmake-GUI進行設定 在本參考中,我們將使用常規(guī)命令行。 最常用和有

    2024年02月16日
    瀏覽(16)
  • SpringBoot項目使用docker-maven-plugin插件構建docker鏡像以及推送到docker hub或docker registry私服

    SpringBoot項目使用docker-maven-plugin插件構建docker鏡像以及推送到docker hub或docker registry私服

    我們知道docker可將應用程序和基礎設施層隔離,可更快地打包、測試以及部署應用程序。本文主要介紹SpringBoot項目如何構建docker鏡像以及推送到私服或者docker hub服務器上。 本文介紹的方式是使用docker-maven-plugin的方式構建SpringBoot的docker鏡像以及推送到私服或docker hub服務器上

    2024年02月16日
    瀏覽(21)
  • 3d max省時插件CG MAGIC功能中的材質(zhì)參數(shù)可一鍵優(yōu)化!

    3d max省時插件CG MAGIC功能中的材質(zhì)參數(shù)可一鍵優(yōu)化!

    渲染的最終結果就是為了讓渲染效果更加真實的體現(xiàn)。 對于一些操作上,可能還是費些時間,VRay可以說是在給材質(zhì)做加法的路上越走越遠,透明度、凹凸、反射等等參數(shù)細節(jié)越做越多。 對于材質(zhì)參數(shù)調(diào)節(jié)的重要性大家都心里有數(shù)的。 VRay材質(zhì)系統(tǒng)的每一次加法和更加精細的

    2024年02月12日
    瀏覽(20)
  • Maven之mirrorof范圍

    Maven之mirrorof范圍

    在配置阿里對官方中央倉庫的鏡像服務器時,我們使用到了 mirror 元素。 故名思意, mirror 用于配置網(wǎng)絡倉庫的『 鏡像 』。當你準備去默認的中央倉庫下載包和插件時,Maven 會『 攔截 』你的下載請求,轉(zhuǎn)而去你所配置的『 鏡像網(wǎng)址 』下載,從而也能實現(xiàn)從指定的國內(nèi)的網(wǎng)

    2024年02月12日
    瀏覽(12)
  • maven的依賴范圍scope使用

    maven的依賴范圍scope使用

    標簽的位置:dependencies/dependency/scope 標簽的可選值:compile/test/provided/system/runtime/import #①compile 和 test 對比 main目錄(空間) test目錄(空間) 開發(fā)過程(時間) 部署到服務器(時間) compile 有效 有效 有效 有效 test 無效 有效 有效 無效 #②compile 和 provided 對比 main目錄(空間

    2024年02月10日
    瀏覽(18)
  • Maven 基礎之依賴管理、范圍、傳遞、沖突

    Maven 基礎之依賴管理、范圍、傳遞、沖突

    坐標和 mvnrepository 網(wǎng)站 在 maven 中通過『 坐標 』概念來確定一個唯一確定的 jar 包。坐標的組成部分有: 元素 說明 groupId 定義當前 Maven 組織名稱 artifactId 定義實際項目名稱 version 定義當前項目的當前版本 [?] 注意 任意兩個不同包,它們的這三個屬性必定至少有一項是不同

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包