1. 程式人生 > >maven打包踩的坑--打包時將pom依賴包加入進來

maven打包踩的坑--打包時將pom依賴包加入進來

步子邁的有點大, 結果基礎不牢

之前ik分詞器打包直接使用run as -> maven install 方式,到maven倉的對應位置生成的jar直接應用, 一直沒有問題

今天ik分詞器新增了pinyin過濾器, 結果打包沒有異常, solr的控制檯在分詞時會報異常class not define... , 因為之前ik分詞器依賴的lucene包都在solr環境中存在

所以需要maven打包成第三方jar包且把pom依賴包打入進來,方法如下:  

1.pom檔案新增

<plugin>  
                    <artifactId>maven-assembly-plugin</artifactId>  
                    <configuration>  
                        <archive>  
                            <manifest>  
                                <mainClass>com.allen.capturewebdata.Main</mainClass>  
                            </manifest>  
                        </archive>  
                        <descriptorRefs>  
                            <descriptorRef>jar-with-dependencies</descriptorRef>  
                        </descriptorRefs>  
                    </configuration>  
                </plugin> 

或者

<build>
        <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4.1</version>
            <configuration> <!-- get all project dependencies -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs> <!-- MainClass in mainfest make a executable jar -->
                <archive>
                    <manifest>
                        <mainClass>util.Microseer</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- bind to the packaging phase -->
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        </plugins>

    </build>

2. run as -> maven build ...  新增命令 clean assembly:assembly(注意這裡沒有mvn , 因為eclipse外掛已經自動新增)

3. 執行成功後會在target資料夾下多出一個以-jar-with-dependencies結尾的JAR包. 這個JAR包就包含了專案所依賴的所有JAR的CLASS(注意該jar包不在maven倉下)