我将尝试按照我的理解回答这个问题:
如何打包一个包含我只需要使用的 spring 配置的 jar java -jar myjar.jar
?
您在问题中的代码片段很有效。您不必参数化context.xml
. 您只需将代码及其依赖项(spring 等)捆绑在一个 jar 中,并在 jar 文件中为主类提供适当的清单条目。
我个人使用maven 2,这是一个pom.xml,我会使用它来做到这一点:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>stackoverflow-autostart-spring-app</artifactId>
<version>0.1</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.stackoverflow.spring.autostart.Autostart</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
这是假设 java 代码的一些包名称,源代码在src/main/java
目录中,文件context.xml
在src/main/resources
目录中。
所以在这pom.xml
有几个重要的点:
- 弹簧依赖性(我相信不言自明)
- maven jar 插件的配置,它将主类添加为清单条目
- maven shade 插件,该插件负责收集所有依赖项/类并将它们打包到一个 jar 中。
可执行 jar 将在target\stackoverflow-autostart-spring-app-0.1.jar
运行时可用mvn package
。
我的盒子上都有这段代码,但我意识到我无法在此处附加 zip 文件。任何人都知道我可以这样做的地方并在这里链接?
如果您想查看它,我在 github 上创建了一个带有与此问题相关的代码的git 存储库。
希望这可以帮助。