Я постараюсь ответить на вопрос так, как я его понимаю:
Как упаковать банку, содержащую конфигурацию пружины, такую как мне просто нужно использовать java -jar myjar.jar
?
Фрагмент кода, который у вас есть в вашем вопросе, просто работает. Вам не нужно параметризовать context.xml
. Вам просто нужно связать ваш код и его зависимости (пружины и т. Д.) В один 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 , который является плагином, отвечающим за сбор всех зависимостей / классов и упаковку их в одну единственную банку.
Исполняемый файл будет доступен на target\stackoverflow-autostart-spring-app-0.1.jar
при запуске mvn package
.
У меня есть этот код, работающий на моей коробке, но я только что понял, что не могу прикрепить zip-файл здесь. Кто-нибудь знает место, где я мог бы сделать это и связать здесь?
Я создал git-репозиторий на github с кодом, связанным с этим вопросом, если вы хотите проверить его.
Надеюсь, это поможет.