Maven 2 Maven使用Maven组件插件构建的jar并不总是可部署的

Maven 2 Maven使用Maven组件插件构建的jar并不总是可部署的,maven-2,maven-plugin,Maven 2,Maven Plugin,我可以在本地机器上构建一个可部署的jar,但是当尝试使用从服务器构建的jar时,即使我显式地手动调用命令,jar也不会运行。起初,它似乎不包括我在classpath/Resources目录中的文件,但在添加了builder助手插件之后,它现在正确地包含了这些文件。但是,它仍然不会运行。我想知道更多关于如何调试它的信息,如何识别本地与服务器之间的差异。下面是插件的相关POM部分 <plugin> <groupId>org.apache.maven.plugins</g

我可以在本地机器上构建一个可部署的jar,但是当尝试使用从服务器构建的jar时,即使我显式地手动调用命令,jar也不会运行。起初,它似乎不包括我在classpath/Resources目录中的文件,但在添加了builder助手插件之后,它现在正确地包含了这些文件。但是,它仍然不会运行。我想知道更多关于如何调试它的信息,如何识别本地与服务器之间的差异。下面是插件的相关POM部分

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
 <execution>
  <goals>
   <goal>attached</goal>
  </goals>
  <phase>package</phase>
  <configuration>
   <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
   </descriptorRefs>
   <archive>
    <manifest>

     <mainClass>com.medialets.service.PostEC</mainClass>
    </manifest>
   </archive>
  </configuration>
 </execution>
</executions>

org.apache.maven.plugins
maven汇编插件
2.2-β-4
附属的
包裹
带有依赖项的jar
com.medialets.service.PostEC


如果这是一个非常简单的问题,请原谅;我对maven比较陌生,还没有找到一个好的答案。可能是因为它比我意识到的更基本。谢谢。

这是一个基于我类似经验的猜测,如果这不是解决方案,你能发布你的POM吗?它可能有助于诊断问题

您的服务器是*nix盒和本地计算机Windows吗?如果是这样,请注意,在指定附加资源文件夹时,路径分隔符应使用斜杠而不是反斜杠。斜杠在Windows和*nix上都有效,而反斜杠在*nix框上被默默忽略

因此,您的buildhelper配置应该如下所示:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>add-resource</id>
        <phase>generate-resources</phase>
        <goals>
          <goal>add-resource</goal>
        </goals>
        <configuration>
          <resources>
            <resource>
              <directory>classpath/Resources</directory>
              <targetPath>/</targetPath>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>

org.codehaus.mojo
构建助手maven插件
1.3
添加资源
产生资源
添加资源
类路径/资源
/

顺便说一句,如果您可以遵循Maven约定,那么这样做是值得的。默认情况下,资源应该位于src/main/resources中。一些插件无法正确处理build helpr插件添加的资源。

这是基于我类似经验的猜测,如果这不是解决方案,您可以发布POM吗?它可能有助于诊断问题

您的服务器是*nix盒和本地计算机Windows吗?如果是这样,请注意,在指定附加资源文件夹时,路径分隔符应使用斜杠而不是反斜杠。斜杠在Windows和*nix上都有效,而反斜杠在*nix框上被默默忽略

因此,您的buildhelper配置应该如下所示:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>add-resource</id>
        <phase>generate-resources</phase>
        <goals>
          <goal>add-resource</goal>
        </goals>
        <configuration>
          <resources>
            <resource>
              <directory>classpath/Resources</directory>
              <targetPath>/</targetPath>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>

org.codehaus.mojo
构建助手maven插件
1.3
添加资源
产生资源
添加资源
类路径/资源
/

顺便说一句,如果您可以遵循Maven约定,那么这样做是值得的。默认情况下,资源应该位于src/main/resources中。某些插件无法正确处理build helpr插件添加的资源。

您还可以尝试运行插件,查看maven解析的POM中是否存在任何差异。

您还可以尝试运行插件,查看maven解析的POM中是否存在任何差异。

尝试运行时的输出是什么罐子?您是否尝试过使用“-e”标志运行maven命令,如果是,是否存在任何明显的异常?正如javamonkey79所说,请发送代码。我猜测了一个答案,但没有更多信息(例如pom内容和使用-e开关运行构建的输出),这只是猜测。当您尝试运行jar时,输出是什么?您是否尝试过使用“-e”标志运行maven命令,如果是,是否存在任何明显的异常?正如javamonkey79所说,请发送代码。我对答案进行了猜测,但没有更多信息(例如pom内容和使用-e开关运行构建的输出),这只是猜测。