相关疑难解决方法(0)

用maven建立可执行jar?

我正在尝试使用maven为一个名为"logmanager"的小型家庭项目生成一个可执行jar,就像这样:

如何使用Maven创建具有依赖关系的可执行JAR?

我将那里显示的代码段添加到pom.xml中,然后运行mvn assembly:assembly.它在logmanager/target中生成两个jar文件:logmanager-0.1.0.jar和logmanager-0.1.0-jar-with-dependencies.jar.当我双击第一个jar时出现错误:

Could not find the main class: com.gorkwobble.logmanager.LogManager. Program will exit.
Run Code Online (Sandbox Code Playgroud)

当我双击jar-with-dependencies.jar时出现稍微不同的错误:

Failed to load Main-Class manifest attribute from: C:\EclipseProjects\logmanager\target\logmanager-0.1.0-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)

我复制并粘贴了路径和类名,并检查了POM中的拼写.我的主要类从eclipse启动配置启动.有人可以帮我弄清楚为什么我的jar文件不会运行?另外,为什么有两个罐开始?如果您需要更多信息,请与我们联系.

这是完整的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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gorkwobble</groupId>
  <artifactId>logmanager</artifactId>
  <name>LogManager</name>
  <version>0.1.0</version>
  <description>Systematically renames specified log files on a scheduled basis. Designed to help manage MUSHClient logging and prevent long, continuous log files.</description>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.2</version>
            <!-- nothing here -->
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <mainClass>com.gorkwobble.logmanager.LogManager</mainClass> …
Run Code Online (Sandbox Code Playgroud)

java eclipse build-process maven-2 executable-jar

121
推荐指数
3
解决办法
15万
查看次数

我应该在maven项目的路径中放置不被视为资源的配置文件

我有一个简单的java maven项目.执行时我的一个类需要从类路径加载xml配置文件.我不想在生成jar时打包这样的xml文件但是我想在conf子文件夹下的zip程序集中包含一个默认的xml文件,我也希望在单元测试中可以使用这个默认的xml来测试它.

在我看来,这个默认的xml有两个可能的位置:

  1. src/main/resources/conf/default.xml
  2. src/main/conf/default.xml

两种解决方案都需要特殊的pom动作

  • 在解决方案1中,我在构建期间将自动复制到目标文件夹,这意味着它在测试中可用,但我也在生产的jar中得到它,我不想要它.

  • 在解决方案2中,我得到了我想要的jar(没有xml)但我手动必须将xml复制到目标文件夹以供测试.(我不想在测试类路径中添加src的子文件夹.我认为这是不好的做法).

问题:两者的最佳解决方案是什么?
- 如果正确为2,将其复制到目标文件夹的最佳方法是什么?
- 有没有比这两个更好,更常见的其他解决方案?

(我还阅读了应该在哪里放置Maven项目的应用程序配置文件?但我想从"约定优于配置"的角度来了解最"正确的解决方案",这个链接提供了一些配置类型的解决方案,但没有任何约定但也许没有一个,但我还是要问.所提供的解决方案还包括AntRun插件和appAssembler插件,我想知道我是否可以完成它们.)

java maven-2 maven

37
推荐指数
1
解决办法
2万
查看次数

Maven从最终WAR中排除文件

我正在使用Maven 3打包WAR文件,我无法弄清楚如何src/main/webapp从生成的最终WAR中排除文件.其中一个目录src/main/webapp是一个git子模块,我想在那个git子模块表单中排除像README,docs /等文件到我的最终WAR.

我最初的尝试是使用maven-antrun-plugin删除文件.我在prepare-package和中尝试了删除操作package,但都没有奏效.执行删除package操作从我的文件中删除了文件target/<projname>/...,但最终的WAR仍然包含文件.运行maven并-debug显示生成WAR文件删除文件.这是几乎一样,如果我想要做的删除之间prepare-packagepackage.

我的下一次尝试是尝试指定要从WAR中排除的文件(下面链接的一些解决方案),但似乎没有任何效果.我可能没有正确指定不需要的文件的路径,我想知道它是否与我的不需要的文件不在src/main/resources,但在src/main/webapp.

我尝试了很多解决方案,但似乎没有任何效果.每次我尝试新的东西,我都会mvn clean删除target目录.最终生成的WAR文件始终包含不需要的文件.

我觉得我的问题的答案存在于我遇到的SO和谷歌搜索中,但我尝试过的任何东西都完全按照我的需要工作.以下是我尝试过的一些解决方案.

war maven

3
推荐指数
1
解决办法
3039
查看次数

标签 统计

java ×2

maven ×2

maven-2 ×2

build-process ×1

eclipse ×1

executable-jar ×1

war ×1