Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
如何让Maven为同一个项目生产两个罐子?_Maven - Fatal编程技术网

如何让Maven为同一个项目生产两个罐子?

如何让Maven为同一个项目生产两个罐子?,maven,Maven,我担心答案很可能是“分割项目”,但接下来 我有一个项目,现在需要输出一个没有log4j.xml配置的jar文件版本。我在想,如果我能有两个输出就好了:一个带有log4j.xml的jar和一个没有log4j.xml的重复jar。我不想为了一个文件而分割这个项目。我尝试过汇编插件,但我认为我还没有找到正确的配置。是的,您可以从一个Maven项目创建多个JAR。可以使用工件的分类器来区分它们 Maven工件由以下部分组成: groupId 人工的 版本 分级机 默认情况下,分类器为空,但在使用ma

我担心答案很可能是“分割项目”,但接下来


我有一个项目,现在需要输出一个没有log4j.xml配置的jar文件版本。我在想,如果我能有两个输出就好了:一个带有log4j.xml的jar和一个没有log4j.xml的重复jar。我不想为了一个文件而分割这个项目。我尝试过汇编插件,但我认为我还没有找到正确的配置。

是的,您可以从一个Maven项目创建多个JAR。可以使用工件的分类器来区分它们

Maven工件由以下部分组成:

  • groupId
  • 人工的
  • 版本
  • 分级机

默认情况下,分类器为空,但在使用maven assembly插件排除log4j.xml文件时,可以将其设置为“nolog4j”。

是的,可以从单个maven项目创建多个JAR。可以使用工件的分类器来区分它们

Maven工件由以下部分组成:

  • groupId
  • 人工的
  • 版本
  • 分级机

默认情况下,分类器为空,但在使用maven assembly插件排除log4j.xml文件时,可以将其设置为“nolog4j”。

我将使用概要文件。创建默认配置文件和不带log4j.xml的配置文件。调用mvn包和&mvn包-P otherprofile。

我会使用profiles。创建默认配置文件和不带log4j.xml的配置文件。调用mvn包和mvn包-P otherprofile。

您可以在第二个配置文件上配置

maven jar插件,如下所示:

<profiles>
 <profile>
  <id>nolog4j<id>
   <build>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
      <excludes>
        <exclude>log4j.xml</exclude>
      </excludes>
    </configuration>
  </plugin>
 </build>
</profile>
</profiles>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/log4j*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

nolog4j
org.apache.maven.plugins

您可以在第二个配置文件上配置
maven jar插件
,如下所示:

<profiles>
 <profile>
  <id>nolog4j<id>
   <build>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
      <excludes>
        <exclude>log4j.xml</exclude>
      </excludes>
    </configuration>
  </plugin>
 </build>
</profile>
</profiles>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/log4j*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

nolog4j
org.apache.maven.plugins

此关系中的最佳解决方案是不使用配置文件因为配置文件会迫使您使用激活的配置文件再次运行构建,如果您喜欢使用发布插件等,则此配置文件将不起作用。最简单的解决方案是使用如下分类器:

<profiles>
 <profile>
  <id>nolog4j<id>
   <build>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
      <excludes>
        <exclude>log4j.xml</exclude>
      </excludes>
    </configuration>
  </plugin>
 </build>
</profile>
</profiles>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/log4j*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

此外,它们将附加到项目并部署到适当的存储库。

这种关系中的最佳解决方案是不使用配置文件因为配置文件会迫使您使用激活的配置文件再次运行构建,如果您喜欢使用发布插件等,则无法运行。最简单的解决方案是要使用这样的分类器:

<profiles>
 <profile>
  <id>nolog4j<id>
   <build>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
      <excludes>
        <exclude>log4j.xml</exclude>
      </excludes>
    </configuration>
  </plugin>
 </build>
</profile>
</profiles>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/log4j*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

此外,它们将附加到项目中,并部署到相应的存储库。

您的回答清楚地说明了为什么使用配置文件不是最佳选择。你需要给maven打两次电话。你的回答正好说明了为什么使用配置文件不是最好的选择。您需要调用maven两次。发布插件还可以配置
releaseProfiles
,以便在部署期间启用多个配置文件。这将不起作用,因为如果您有两个配置文件使用相同的生命周期绑定,并且执行相同,则只有一个配置文件会获胜。除此之外,处理这个问题的最好方法是在没有任何配置文件的情况下运行它。我在没有任何配置文件的情况下运行它,它完全满足了我的要求。我对JAR做了一个区分,唯一的变化是其中一个没有log4j配置。谢谢发布插件还可以配置
releaseProfiles
,以便在部署期间启用多个配置文件。这将不起作用,因为如果您有两个配置文件使用相同的生命周期绑定,并且执行相同,则只有一个配置文件会获胜。除此之外,处理这个问题的最好方法是在没有任何配置文件的情况下运行它。我在没有任何配置文件的情况下运行它,它完全满足了我的要求。我对JAR做了一个区分,唯一的变化是其中一个没有log4j配置。谢谢