Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
exec maven插件未评估<;类路径>;正确依赖_Maven_Classpath_Dependency Management - Fatal编程技术网

exec maven插件未评估<;类路径>;正确依赖

exec maven插件未评估<;类路径>;正确依赖,maven,classpath,dependency-management,Maven,Classpath,Dependency Management,Context:我有一个Maven目标,它调用一个可执行文件(它碰巧是Groovy脚本,但并不重要),它需要一个运行库的路径作为参数(它碰巧是JDBC驱动程序,但也不重要) 我没有硬编码驱动程序的路径,而是将其构建为一个类路径依赖关系,这样它就可以从Maven存储库的位置中选择(我们有不同的环境和不同的操作系统) 可以看出,它没有获取到驱动程序的类路径(存在) 我尝试过在引用中包含依赖项的版本号,也尝试过不包含依赖项的版本号 提前谢谢。根据我的评论,我找到了一种不同的方法来做同样的事情。由于没有

Context:我有一个Maven目标,它调用一个可执行文件(它碰巧是Groovy脚本,但并不重要),它需要一个运行库的路径作为参数(它碰巧是JDBC驱动程序,但也不重要)

我没有硬编码驱动程序的路径,而是将其构建为一个
类路径依赖关系
,这样它就可以从Maven存储库的位置中选择(我们有不同的环境和不同的操作系统)

可以看出,它没有获取到驱动程序的类路径(存在)

我尝试过在引用中包含依赖项的版本号,也尝试过不包含依赖项的版本号


提前谢谢。

根据我的评论,我找到了一种不同的方法来做同样的事情。由于没有发布其他解决方案,如果有人遇到同样的问题,我会将其作为答案发布

关键是使用一个不同的插件,它可以动态地创建用jar路径填充的属性

<plugin>
  <groupId>org.bitstrings.maven.plugins</groupId>
  <artifactId>dependencypath-maven-plugin</artifactId>
  <version>1.1.1</version>
  <executions>
    <execution>
      <id>set-all</id>
      <goals>
        <goal>set</goal>
      </goals>
    <configuration>
      <propertySets>
        <propertySet>
          <includes>
            <include>postgresql:postgresql:jar</include>
          </includes>
        </propertySet>
      </propertySets>
    </configuration>
    </execution>
  </executions>
</plugin>

[...]

<execution>
  <id>my-script</id>
  <phase>compile</phase>
  <goals>
    <goal>exec</goal>
  </goals>
  <configuration>
    <executable>path/to/groovy</executable>
    <arguments>
      <argument>-cp</argument>
      <argument>${postgresql:postgresql:jar}</argument>
      <argument>my-script.groovy</argument>
    </arguments>
  </configuration>
</execution>

org.bitstrings.maven.plugins
dependencypath maven插件
1.1.1
集合所有
设置
postgresql:postgresql:jar
[...]
我的剧本
编译
执行官
path/to/groovy
-cp
${postgresql:postgresql:jar}
my-script.groovy

问得好。我不知道您可以这样指定
cp
。你能告诉我你在哪里找到这些信息吗?还有,你试过应用这个吗?@AndrewLogvinov从一位同事那里得到了提示,他说这对他有用(他现在不在)。请看我上面评论中的第二个问题。明天我将尝试测试这种行为,但我认为这是某种配置错误。一个细节(不太确定是否相关)是,他提到他使用的是Maven 2.0.9,而我使用的是3.0。4@AndrewLogvinov我试过那种方法,结果也一样。
<dependency>
  <groupId>postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>9.1-901.jdbc4</version>
  <scope>provided</scope>
</dependency>


<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <id>initialize-rule-plugin</id>
      <phase>compile</phase>
        <goals><goal>exec</goal></goals>
        <configuration>
          <executable>full\path\to\groovy</executable>
          <arguments>
            <argument>-cp</argument>
              <classpath>
                <dependency>postgresql:postgresql</dependency>
              </classpath>
            <argument>myscript.groovy</argument>
          </arguments>
        </configuration>
      </execution>
  </executions>
</plugin>
[DEBUG] Configuring mojo 'org.codehaus.mojo:exec-maven-plugin:1.2.1:exec' with basic configurator -->
[DEBUG]   (s) dependency = postgresql:postgresql
[DEBUG]   (f) arguments = [-cp, Classpath { postgresql:postgresql}, ]
[...]
[DEBUG] Collected project artifacts [org.springframework:spring-context:jar:3.1.2.RELEASE:compile, org.springframework:spring-aop:jar:3.1.2.RELEASE:compile, org.springframework:spring-beans:jar:3.1.2.RELEASE:compile, org.springframework:spring-core:jar:3.1.2.RELEASE:compile, org.springframework:spring-expression:jar:3.1.2.RELEASE:compile, org.springframework:spring-asm:jar:3.1.2.RELEASE:compile, org.springframework:spring-webmvc:jar:3.1.2.RELEASE:compile, org.springframework:spring-context-support:jar:3.1.2.RELEASE:compile, org.springframework:spring-web:jar:3.1.2.RELEASE:compile, org.springframework:spring-tx:jar:3.1.2.RELEASE:compile, aopalliance:aopalliance:jar:1.0:compile, org.springframework:spring-orm:jar:3.1.2.RELEASE:compile, org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile, org.slf4j:slf4j-api:jar:1.7.1:compile, org.slf4j:jcl-over-slf4j:jar:1.7.1:runtime, org.slf4j:slf4j-log4j12:jar:1.7.1:runtime, log4j:log4j:jar:1.2.17:compile, javax.validation:validation-api:jar:1.0.0.GA:compile, org.hibernate:hibernate-validator:jar:4.3.0.Final:compile, org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile, org.hibernate:hibernate-entitymanager:jar:4.1.7.Final:compile, org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile, dom4j:dom4j:jar:1.6.1:compile, org.javassist:javassist:jar:3.15.0-GA:compile, org.hibernate:hibernate-core:jar:4.1.7.Final:compile, antlr:antlr:jar:2.7.7:compile, org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile, org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile, org.codehaus.jackson:jackson-mapper-asl:jar:1.9.10:compile, org.codehaus.jackson:jackson-core-asl:jar:1.9.10:compile, javax.servlet:jstl:jar:1.2:compile, commons-dbcp:commons-dbcp:jar:1.4:compile, commons-pool:commons-pool:jar:1.5.4:compile, org.codehaus.groovy:groovy-all:jar:2.0.5:compile]
[DEBUG] Collected project classpath [C:\projects\myproject\target\classes]
[DEBUG] Toolchains are ignored, 'executable' parameter is set to c:\full\path\to\groovy
[DEBUG] Executing command line: cmd /c c:\full\path\to\groovy.bat -cp C:\projects\myproject\target\classes myscript.groovy 
<plugin>
  <groupId>org.bitstrings.maven.plugins</groupId>
  <artifactId>dependencypath-maven-plugin</artifactId>
  <version>1.1.1</version>
  <executions>
    <execution>
      <id>set-all</id>
      <goals>
        <goal>set</goal>
      </goals>
    <configuration>
      <propertySets>
        <propertySet>
          <includes>
            <include>postgresql:postgresql:jar</include>
          </includes>
        </propertySet>
      </propertySets>
    </configuration>
    </execution>
  </executions>
</plugin>

[...]

<execution>
  <id>my-script</id>
  <phase>compile</phase>
  <goals>
    <goal>exec</goal>
  </goals>
  <configuration>
    <executable>path/to/groovy</executable>
    <arguments>
      <argument>-cp</argument>
      <argument>${postgresql:postgresql:jar}</argument>
      <argument>my-script.groovy</argument>
    </arguments>
  </configuration>
</execution>