11433


javaで、windowsアプロケーションを作成するにあたり、まずは実行可能なjarを生成しようと思いました。  
普段WEBアプリケーション開発でSpring/Mavenあたりを使用しているので、使いなれたものを使おうと思い、  
同じくSpring / MavenでHello worldを作りました。

TestMain.java

[code]

    package aaa.bbb.ccc;
    
    @Component
    public class TestMain {
        public static void main(String[] args) {
            try {
                ApplicationContext ctx = new AnnotationConfigApplicationContext(TestConfig.class);
                TestMain main = ctx.getBean(TestMain.class);
                main.exec();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void exec() {
            System.out.println("Hello world");
        }
    }
    
[/code]

TestConfig.java

[code]

    @Configuration
    @ComponentScan(basePackages = {"aaa.bbb.ccc"})
        public class TestConfig {   
    }
    
[/code]

POMにはmaven-assembly-pluginを追加しました。

[code]

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2</version>
        <configuration
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
                <manifest>
                    <mainClass>aaa.bbb.ccc.TestMain</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    
[/code]

これでローカルのリポジトリで

[code]

    mvn clean install
    
[/code]

を行い、生成されたjarのところで

[code]

    java -jar sample.jar
    java -classpath "*" aaa.bbb.ccc.TestMain
    
[/code]

等やってみましたが、

ApplicationContextが見つかりませんと出ます。  
FatJarの定義を書いてあるので、Springまでラッピングしてくれるものかと思っていたのですが違うのでしょうか？  
実行時にSpring本体等もクラスパスに追加しないとできないのでしょうか？

よろしくお願いします。


CC BY-SA 3.0
2015-06-17T05:14:25.653
11432
2015-06-25T07:22:03.953
2015-06-25T07:22:03.953
5778
8396
question
java spring maven
Maven / FatJarのビルドについて


自己解決しました。

[code]

    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase> 
        <goals>
            <goal>single</goal>
        </goals>
      </execution>
    </executions>
    
[/code]

この記述をpom.xmlに追加したところ、with-dependenciesアーカイブが生成されました。


CC BY-SA 3.0
2015-06-17T06:32:32.820
11433
2015-06-25T06:29:56.677
2015-06-25T06:29:56.677
5778
8396
11432
answer