2010-04-06 13 views
6

Tôi muốn thêm đường dẫn lớp bổ sung vào plugin exec-maven.
Bên cạnh% classpath, tôi muốn thêm đường dẫn bổ sung vào thư mục chứa tài nguyên (/ Users/kornp/resources). Hiện tại, pom của tôi trông giống như sau:Thêm đường dẫn bổ sung vào exec-maven-plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <configuration> 
    <executable>java</executable> 
    <classpathScope>runtime</classpathScope> 
    <arguments> 
     <argument>%classpath:/Users/kornp/resources</argument> 
     <argument>org.drrabbit.maventest.App</argument> 
    </arguments> 
    </configuration> 
</plugin> 

Tôi nên định cấu hình như thế nào?

Trả lời

2

Bạn đã thử sử dụng thông số commandlineArgs (như được đề cập trong exec example)?

+0

Vâng, tôi đã làm, nhưng sau đó % classpath không hoạt động nữa. –

+0

@Kornp Arf, xin lỗi, đó không phải là sự hiểu biết của tôi về ví dụ. Tôi không biết nếu có một cách khác mặc dù. Có phải thiết lập classpath bằng tay một tùy chọn không? –

+0

Vâng, đó là một tùy chọn, nhưng có khá nhiều tệp jar liên quan. Vì vậy, nó sẽ là một công việc tẻ nhạt. Cảm ơn gợi ý. –

0

Okay,

Tôi thích các plugin để các đối số dòng lệnh có thể được xác định đầy đủ (bao gồm cả các thông số% classpath)

+0

Nếu bạn quan tâm để sao chép kết quả vào câu trả lời, bạn có thể nhận được 3 phiếu bầu cho huy hiệu tự học. – Martin

+0

Martin, ý bạn là sao chép kết quả vào câu trả lời? –

+0

@KornP, plugin được chỉnh sửa của bạn ở đâu? – Gili

1

Mặc dù nó có vẻ ít thanh lịch, nhưng chuyển sang antrun Plugin nên hoạt động:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>runSomething</id> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <property name="runtime_classpath" refid="maven.runtime.classpath"/> 

        <java classname="org.drrabbit.maventest.App" 
          fork="true" 
          failonerror="true" 
          maxmemory="512m"> 

         <classpath> 
          <pathelement path="${project.build.directory}/some/extra/resources" /> 
          <pathelement path="${runtime_classpath}" /> 
         </classpath> 
        </java> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Tuy nhiên, có vẻ như bạn không nên đặt thêm tài nguyên ở đâu đó bên ngoài dự án, như ý kiến ​​của bạn. Bạn nên xem xét việc đưa nó vào như một phần của dự án, hoặc làm cho nó trở thành một cái bình và triển khai cho repo maven để bạn có thể đặt nó như là một sự phụ thuộc của plugin.

5

Tôi có một số tệp cấu hình trong một thư mục cụ thể nằm ngoài thư mục nguồn của mình. Vì vậy, tôi đã định nghĩa các tài nguyên bổ trợ cho tệp pom.xml của tôi.

cấu trúc thư mục mẫu của tôi là:

+ src 
+ conf 
    - app.properties 
    - log4j.xml 
- pom.xml 

pom.xml của tôi:

<build> 
    <resources> 
    <resource> 
     <directory>conf</directory> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
    </resources> 

    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
     <executable>java</executable> 
     <mainClass>com.mycompany.MyMainClass</mainClass> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

Bây giờ chúng ta có thể thực hiện chương trình:

mvn clean compile exec:java 
+2

tôi có một vấn đề nhận được điều này để làm việc trong trường hợp lớp chính của tôi đến từ một sự phụ thuộc và không phải là dự án riêng của mình. – kutschkem

+0

Cảm ơn rất nhiều! Điều này thực sự giúp đỡ! – Yuanhang