Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用maven的示例代码归档_Java_Maven 2_Build - Fatal编程技术网

Java 使用maven的示例代码归档

Java 使用maven的示例代码归档,java,maven-2,build,Java,Maven 2,Build,该项目是一个包含核心库代码、测试和示例代码的库。在构建过程结束时,应创建以下档案: xy-1.1.0-core.jar xy-1.1.0-tests.jar xy-1.1.0-examples.jar 与maven合作的最佳方式是什么? 当前设置为: src src/main/java src/examples/java src/test/java 此外,应该有一个包含所有依赖项的lib目录。 xy JAR、库JAR和其他脚本应该打包到一个发布文件xy-1.1.0.tar.gzMaven的

该项目是一个包含核心库代码、测试和示例代码的库。在构建过程结束时,应创建以下档案:

  • xy-1.1.0-core.jar
  • xy-1.1.0-tests.jar
  • xy-1.1.0-examples.jar
与maven合作的最佳方式是什么? 当前设置为:

src
src/main/java
src/examples/java
src/test/java
此外,应该有一个包含所有依赖项的
lib
目录。
xy JAR、库JAR和其他脚本应该打包到一个发布文件
xy-1.1.0.tar.gz

Maven的一大优点(或缺点,取决于您与谁交谈)是“约定优先于配置”——这意味着当您有选择尝试将应用程序撬锁到Maven中时,或者尝试将Maven撬开到你的应用程序中——通常,将你的应用程序撬开到Maven中要容易得多

将单个“项目”分解为两个Maven项目可能会更容易——核心项目和示例项目。Maven将“项目”视为创建单个工件的东西-aka JAR文件、WAR文件、EAR文件等(有一些例外情况-例如测试JAR,但我们将在后面讨论)。将“示例”视为依赖于“核心”的模块、子项目或单独项目可能会更容易项目

“测试”部分是否仅包含“核心”测试,或“核心”和“示例”测试?如果它只是核心,那么您需要将其移动到核心项目的测试目录中。如果两者都是,则需要将其拆分并将单元测试移动到适当的项目中

您可以通过配置maven JAR插件来生成项目测试代码的JAR,如中所述

Maven将通过Maven构建的所有程序的所有依赖项保存在“本地存储库”(通常存储在%user_directory%/.m2下的多个目录中)中。您可以让Maven使用dependency:copy dependencies将项目的所有依赖项复制到指定目录中,如上所述


要构建最终的tar,您将使用以前的项目构建一个tar。

Nate在大部分内容中都介绍了这一点,但我将给出具体的示例

以下是目录布局的外观:

pom.xml
src/main/assembly/assembly.xml
core/pom.xml
core/src/main/java/...
core/src/test/java/...
examples/pom.xml
examples/src/main/java/...
在基本pom中,您将表示子模块,如下所示:

<modules>
  <modules>core</modules>
  <modules>examples</modules>
</modules>

核心
例子
假设您的基本groupId为“com.company.example”,而artifactId为“xy”,那么您的模块poms将从以下内容开始(当然要调整名称和版本):


com.company.example
xy
1.0.0-SNAPSHOT
com.company.example
xy型芯
1.0.0-SNAPSHOT
要确保程序集在基础项目中运行,请在生成配置中包括以下内容:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <descriptors>
      <descriptor>src/main/assembly/assembly.xml</descriptor>
    </descriptors>
  </configuration>
</plugin>

org.apache.maven.plugins
maven汇编插件
2.1
src/main/assembly/assembly.xml
另外,要为测试类构建单独的jar,请将其添加到core/pom.xml文件中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>jar</goal>
        <goal>test-jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

org.apache.maven.plugins
maven jar插件
罐子
试验罐
assembly.xml本身如下所示:

<assembly>
  <id>assembly</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <binaries>
        <dependencySets>
          <dependencySet>
            <outputDirectory>lib</outputDirectory>
          </dependencySet>
        </dependencySets>
        <outputDirectory>lib</outputDirectory>
      </binaries>
    </moduleSet>
  </moduleSets> 
</assembly>

装配
tar.gz
假的
解放党
解放党

我可能在这里遗漏了一些东西,但这是一般的想法。

我不同意这个问题没有建设性——我发现答案很有用,因为在Maven的惯例中,您可以使用这些选项。我认为这可能是一个过度激进的节制的例子。
<assembly>
  <id>assembly</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <binaries>
        <dependencySets>
          <dependencySet>
            <outputDirectory>lib</outputDirectory>
          </dependencySet>
        </dependencySets>
        <outputDirectory>lib</outputDirectory>
      </binaries>
    </moduleSet>
  </moduleSets> 
</assembly>