从jar maven依赖项中排除.class文件

时间:2015-07-06 08:21:38

标签: java maven

我有3个maven项目A,B,C。 A依赖于B,而B依赖于C. A的POM依赖于B和B的POM对C有依赖性。 我想在构建A时在C中排除类文件。

我该怎么做? 我尝试使用maven-jar-plugin的排除,但无法成功。

2 个答案:

答案 0 :(得分:2)

使用maven-jar-plugin

override func viewDidLoad() {
    super.viewDidLoad()

    //Validation
    validator.registerField(tfName, rules: [RequiredRule(), FullNameRule()])
}

@IBAction func btnValidatePressed(sender: AnyObject) {
        validator.validate(delegate:self) //Error Line
    }

//MARK: - Validation

func validationSuccessful() {

}

func validationFailed(errors:[UITextField:ValidationError]) {
    // turn the fields to red
    for (field, error) in validator.errors {
        field.layer.borderColor = UIColor.redColor().CGColor
        field.layer.borderWidth = 1.0
        error.errorLabel?.text = error.errorMessage // works if you added labels
        error.errorLabel?.hidden = false
    }
}

答案 1 :(得分:0)

没有快速简便的方法。如果将JAR作为依赖项添加到项目中,则JAR将添加到测试或编译类路径中(基于您提供的范围)。

maven-dependency-plugin提供unpack目标,可用于将工件解压缩到特定目录。

作为解决问题的方法,您可以在构建期间将工件C解压缩到A的目标/类中。 unpack目标提供了一种排除某些文件模式的方法(因此您可以排除特定的类)。

还要确保未将C JAR添加到A的类路径中(相应地调整依赖项 - 可能为类型为pom的C而不是jar添加依赖项)。

https://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html

如何在不改变B的情况下从A中排除C jar

    <dependency>
        <artifactId>B</artifactId>
        <groupId>bgroupId</groupId>
        <version>bverison</version>
        <exclusions>
            <exclusion>
                <artifactId>C</artifactId>
                <groupId>cgroupId</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
      <artifactId>C</artifactId>
        <groupId>cgroupId</groupId>
        <version>cverison</version>
        <type>pom</type>
        <exclusions>
            <exclusion>
                <artifactId>*</artifactId>
                <groupId>*</groupId>
            </exclusion>
        </exclusions>
    </dependency>

现在您可以使用依赖插件来适当地解压缩C JAR(不包括某些文件)