91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

maven的exec-maven-plugin插件怎么使用

發布時間:2021-12-14 17:38:02 來源:億速云 閱讀:1172 作者:iii 欄目:大數據

這篇文章主要講解了“maven的exec-maven-plugin插件怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“maven的exec-maven-plugin插件怎么使用”吧!

簡介

maven的exec-maven-plugin插件主要是用來執行可執行jar包命令的插件,很多工具提供命令行式的交互,例如mybatis-generator,每一次運行都會敲很長的命令,很麻煩。

還有的時候,你希望提供一個3方包給比人使用,為了讓別人能夠通過非常簡單的命令就可以運行程序,就可以使用exec-maven-plugin插件。

當然也可以是腳本的方式來實現,但是腳本的通用性不是很好,你要提供run.bat,run.sh等腳本。通過exec-maven-plugin就可以避免這樣的問題。

exec-maven-plugin插件有2個目錄(goal),一個是java一個是exec。這里簡單解釋一下maven的goal,可以把maven的goal看做是一個特定的功能,一個maven插件可能有很多功能,一個功能就是一個goal,maven還有生命周期的概念,maven有3套生命周期,分別是clean,default,site。每一個生命周期有包含一下階段(phase),可以把每一個階段看做一個流程。參加后面的maven生命周期。例如執行下面的2個命令:

mvn clean package
mvn clean test

上面的2個命令都包含了2個生命周期,clean和default生命周期。clean會執行clean生命周期的pre-clean和clean階段,mvn clean package命令會從default生命周期會從validate執行到package階段,mvn clean test命令會從default生命周期的validate階段執行到package階段。

插件就是把goal綁定到生命指定階段的上執行的。就是maven在執行相應階段的時候會檢查有那些插件的goal綁定到這個階段上的,然后執行這些goal。

如果對這些知識有疑惑,強烈建議閱讀《maven實戰》。

實例

java 目標

public class App 
{
    public static void main( String[] args )
    {
        for(String arg : args){
            System.out.println(arg);
        }
    }
}

上面的代碼非常簡單,打印main方法參數。

<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>cn.freemethod</groupId>
    <artifactId>plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>plugin</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <exec_maven_plugin_version>1.2.1</exec_maven_plugin_version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
        <!-- http://www.mojohaus.org/exec-maven-plugin/ -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>${exec_maven_plugin_version}</version>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                        <configuration>
                            <mainClass>cn.freemethod.plugin.App</mainClass>
                            <arguments>
                                <argument>arg0</argument>
                                <argument>arg1</argument>
                            </arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

看上面的配置,我們把exec-maven-plugin 插件的java模板(goal)綁定到了default生命周期的test階段上。所以我們只需要執行下面的命令就可以了:

mvn test

exec目標

import java.util.ArrayList;
import java.util.List;

public class Exec {
    
    public static void main(String[] args) {
        System.out.println(System.getProperty("systemProperty1"));
        System.out.println(System.getProperty("systemProperty2"));
        for(String arg:args){
            System.out.println(arg);
        }
        testGcTypeLog();
    }
    
    public static void testGcTypeLog(){
        List<Object> list = new ArrayList<Object>();
        while (true) {
            byte[] m = costMemory(1024*1024*10);
            list.add(m);
            if(list.size()==90){
                list.clear();
            }
        }
    }
    
    public static byte[] costMemory(int i) {
        byte[] m = new byte[i];
        return m;
    }

}

上面的例子就是打印指定的系統參數和不斷申請內存然后釋放內存,最要是為了觀察打印日志。

<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>cn.freemethod</groupId>
    <artifactId>plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>plugin</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <exec_maven_plugin_version>1.2.1</exec_maven_plugin_version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
        <!-- http://www.mojohaus.org/exec-maven-plugin/ -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>${exec_maven_plugin_version}</version>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                <configuration>
                    <executable>java</executable>
                    <arguments>
                        <argument>-DsystemProperty1=value1</argument>
                        <argument>-DsystemProperty2=value2</argument>
                        <argument>-XX:+PrintGCDetails</argument>
                        <argument>-classpath</argument>
                        <classpath />
                        <argument>cn.freemethod.plugin.Exec</argument>
                        <argument>arg1</argument>
                        <argument>arg2</argument>
                    </arguments>
                </configuration>
                </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

上面的配置我們也是把exec-maven-plugin插件的exec目標(goal)綁定到了default生命周期的test階段上,我們配置了-DsystemProperty1=value1設置系統參數,配置-XX:+PrintGCDetails設置jvm參數。

還是可以通過下面的命令來執行:

mvn test

maven的exec-maven-plugin插件怎么使用

從上圖可以看到打印了我們設置的系統參數,命令參數和gc日志。

當然也可以不綁定生命周期,可以像下面這樣配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>${exec_maven_plugin_version}</version>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-DsystemProperty1=value1</argument>
            <argument>-DsystemProperty2=value2</argument>
            <argument>-XX:+PrintGCDetails</argument>
            <argument>-classpath</argument>
            <classpath />
            <argument>cn.freemethod.plugin.Exec</argument>
            <argument>arg1</argument>
            <argument>arg2</argument>
        </arguments>
    </configuration>
</plugin>

如果像上面這樣配置就需要先打包,然后執行exec:

mvn clean package
mvn exec:exec

maven生命周期

clean聲明周期:(3 phase(階段))

  1. pre-clean

  2. clean:清理上一次構建生成的文件

  3. post-clean

default聲明周期:(23 phase)

  1. validate

  2. initialize

  3. generate-sources

  4. process-sources:處理項目主資源文件,拷貝src/main/resources 到classpath

  5. generate-resources

  6. process-resources

  7. compile:編譯src/main/java代碼輸出到classpath

  8. process-classes

  9. generate-test-sources

  10. process-test-sources:對src/test/resource目錄進行變量替換,拷貝到test的classpath

  11. generate-test-resources

  12. process-test-resources

  13. test-compile

  14. process-test-classes

  15. test

  16. prepare-package

  17. package

  18. pre-integration-test

  19. integeration-test

  20. post-integration-test

  21. verify

  22. install:安裝到本地倉庫

  23. deploy

site生命周期:(4 phase)

  1. pre-site

  2. site

  3. post-site

  4. site-deploy

感謝各位的閱讀,以上就是“maven的exec-maven-plugin插件怎么使用”的內容了,經過本文的學習后,相信大家對maven的exec-maven-plugin插件怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

自治县| 德惠市| 治县。| 峨眉山市| 宣武区| 洛阳市| 沅陵县| 梧州市| 从江县| 荔波县| 南汇区| 井陉县| 内乡县| 南投市| 烟台市| 扶风县| 连云港市| 永善县| 沙湾县| 鹿泉市| 仙游县| 武陟县| 泌阳县| 长乐市| 六安市| 民县| 岳西县| 淅川县| 师宗县| 得荣县| 临桂县| 偃师市| 宁化县| 香河县| 公主岭市| 长子县| 翁源县| 泗阳县| 腾冲县| 运城市| 滨州市|