2

我可以在本地机器上构建一个可部署的 jar,但是当尝试使用从我们的服务器构建的 jar 时,即使我手动显式调用命令,jar 也不会运行。起初,它似乎没有包含我在 classpath/Resources 目录中的文件,但在添加了 builder-helper 插件后,它现在正确地包含了它们。但是,它仍然不会运行。我想更多地了解如何调试它,如何识别差异以查看本地与服务器发生的情况。这是插件的相关 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>

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

4

2 回答 2

0

您也可以尝试运行help:effective-pom插件来查看 maven 解析的 POM 中是否存在任何差异。

于 2009-09-24T19:57:16.683 回答
0

这是基于我的类似经验的猜测,如果这不是解决方案,您可以发布您的 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>

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

于 2009-09-15T09:45:32.730 回答