当前位置: 首页 > 知识库问答 >
问题:

Maven:下面的pom.xml文件给空JAR提供了什么?

贡英华
2023-03-14

我编写了以下pom.xml文件:

<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>
    <parent>
        <groupId>com.earnix.eo</groupId>
        <artifactId>EOParent</artifactId>
        <version>8.8.4.0-SNAPSHOT</version>
        <relativePath>../EOParent/pom.xml</relativePath>
    </parent>
    <artifactId>PricingBatch</artifactId>
    <name>PricingBatch</name>
<packaging>jar</packaging>

<dependencies>
    <dependency>
        <groupId>com.earnix.eo</groupId>
        <artifactId>Tools</artifactId>
        <version>${project.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.earnix.eo</groupId>
        <artifactId>EarnixShared</artifactId>
        <version>${project.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.earnix.eo</groupId>
        <artifactId>EOGUI</artifactId>
        <version>${project.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.earnix.eo</groupId>
        <artifactId>EOSessions</artifactId>
        <version>${project.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.earnix.eo</groupId>
        <artifactId>EOUtils</artifactId>
        <version>${project.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.sample</groupId>
        <artifactId>sample1</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>C:\ibm\WebSphere\AppServer\lib\bootstrap.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.sample</groupId>
        <artifactId>sample2</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>C:\ibm\WebSphere\AppServer\runtimes\com.ibm.ws.webservices.thinclient_8.5.0.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.sample</groupId>
        <artifactId>sample3</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>C:\ibm\WebSphere\AppServer\java\jre\lib\xml.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.sample</groupId>
        <artifactId>sample4</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>C:\ibm\WebSphere\AppServer\java\jre\lib\ibmorb.jar</systemPath>
    </dependency>
</dependencies>

<build>
    <finalName>PricingBatch</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.earnix.tools.batchpricing.Main</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>EOSessions.jar EOUtils.jar EOSessions.jar EOGUI.jar EarnixShared.jar bootstrap.jar ibmorb.jar xml.jar com.ibm.ws.webservices.thinclient_8.5.0.jar</Class-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

我的目的是构建一个jar文件,它的主类是com.earnix.tools.BatchPricing.main。如你所见,我有许多依赖项。四个依赖项是不属于maven Artifactory的jar文件:C:\IBM\WebSphere\AppServer\runtimes\com.ibm.ws.webservices.thinclient_8.5.0.jar、C:\IBM\WebSphere\AppServer\lib\bootstrap.jar、
C:\IBM\WebSphere\AppServer\java\jre\lib\xml.jar、C:\IBM\WebSphere\AppServer\java\jre\lib\ibmorb.jar

我没有看到com.earnix.tools.batchpricing.main类。

我可以做什么来使Maven创建我想要的jar文件?

共有1个答案

韶云瀚
2023-03-14

我在pom.xml中看到了这种依赖关系

<dependency>
    <groupId>com.earnix.eo</groupId>
    <artifactId>Tools</artifactId>
    <version>${project.version}</version>
    <scope>compile</scope>
</dependency>

因此,如果您希望在该模块中使用main类com.earnix.tools.batchpricing.main,那么您最好从该模块构建可执行的jar。

或者您可以要求Maven将所有依赖项解包到生成的jar中

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>fully.qualified.MainClass</mainClass>
      </manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <appendAssemblyId>false</appendAssemblyId>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- bind to the packaging phase -->
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>
 类似资料:
  • 我正在为我的项目使用maven,在提供GroupId、ArtifactId和Version之后,需要提供一个Nexus路径。 我的Nexus路径-https://nexus/content/repositories/ 路径中存在的工件-https:/mynexusdomain/nexus/内容/存储库/快照/com/org/abc/myartifactid/MySnapshotVersion/pl

  • 开普勒不会这样。卢娜哪里坏了?我在防火墙和代理服务器后面,阻止某些类型的互联网访问。 多谢了。

  • 这是我的pom文件的一个片段。 我通过命令成功地使用了它 但是,当我尝试将其包含在“pluginManagement”标记中时,当我启动目标时,将停止工作。为什么“插件管理”标签会改变构建行为?或者我应该使用其他目标或选项?

  • 问题内容: 使用Eclipse WTP和m2eclipse时,可以将所有依赖项复制到WEB-INF / lib(通过在Deployment程序集中添加“ maven依赖项”)。但是,还会复制范围“已提供”的依赖项,例如el-api和jsp-api。这会干扰容器,并且无法启动。 不复制“提供的”罐子的解决方案吗? 问题答案: 您必须安装 这是m2eclipse的额外插件 它将为您完成这项工作。安装m

  • 问题内容: 我正在使用selenium脚本,在其中尝试下载Excel文件并为其指定特定名称。这是我的代码: 无论如何,我可以给下载的文件指定一个特定的名称吗? 码: 问题答案: 您不能通过硒指定下载文件的名称。但是,您可以下载文件,在下载的文件夹中找到最新文件,然后根据需要重命名。 注意:从Google搜索中借用的方法可能有错误。但是你明白了。

  • 问题内容: 我希望站点上的用户能够下载路径被遮盖的文件,以便不能直接下载它们。 例如,我希望URL如下所示: http://example.com/download/?f=somefile.txt 在服务器上,我知道所有可下载文件都位于文件夹中。 有没有一种方法可以使Django提供该文件供下载,而不是尝试查找URL和查看以显示它? 问题答案: 对于“两全其美”,你可以将S.Lott的解决方案与x