2016-10-02 103 views
-1

試圖瞭解maven flow.Need創建一個名爲'my-source'的文件夾並將多個文件複製到同一個文件夾中。想要不同的maven項目結構

我想要一個maven build zip文件,它應該包含'my-source'文件夾及其內容。我該怎麼做?我曾經介紹過的文章只看到java項目/文件夾結構的例子。

我還見過sourcedirectory/outputdirectory。不知道在哪裏可以修改這些值,因爲我couldnot找到effectivepom的位置

所以,請給我的過程中滿足我的要求

+0

如果您想了解Maven,首先要了解基本概念,最重要的是理解Maven。約定優先配置這意味着遵循默認設置,並且不要試圖只在確實有充分理由的情況下才更改它們。你能顯示你的項目的文件夾結構嗎? – khmarbaise

+0

是的,我同意,maven遵循約定而不是配置。但只是想知道,如果maven可以建立一個非Java項目,其中的文件夾結構不同於Java (無法在這裏添加項目結構圖) – rajesh

+0

項目結構很簡單。會有文件夾「projectA」,它會有「mysource」文件夾,也有pom.xml 注意:mysource文件夾會有多個文件(如sql,html等)。在構建完成後,我應該在projectA中接收目標文件夾,它應該包含所有文件的zip文件 – rajesh

回答

0

爲了創建與您的所有內容的zip文件,你將不得不使用maven程序集插件在你的pom.xml中。除此之外,你還需要一個文件(比如說bin.xml),它會告訴你想要在zip中打包哪些文件。 pom.xml中的程序集插件將簡單地指向bin.xml文件。
請參閱下面的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.abc</groupId> 
    <artifactId>xyz</artifactId> 
    <version>3.1.3</version> 

    <build> 
     <plugins> 
      <plugin> <!-- Create a zip file with the contents you want deployed --> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.5.5</version> 
       <configuration> 
        <descriptors> 
         <descriptor>src/assembly/bin.xml</descriptor> // very important. This is where we will tell where our bin.xml is located 
        </descriptors> 
        <appendAssemblyId>false</appendAssemblyId> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 
</project> 

現在創建一個像src/assembly這樣的文件夾結構並添加一個名爲bin.xml的文件。請參閱下面的示例代碼,該代碼應該在bin.xml中進行。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>distrib</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>${project.basedir}/my-source</directory> // the folder that you want to the packaged in the zip file 
      <outputDirectory>/</outputDirectory> // the location within the zip file where your folder should be copied. In this case it will place the my-source directory at the root level of the zip file. 
      <useDefaultExcludes>true</useDefaultExcludes> 
     </fileSet> 
    </fileSets> 
</assembly>