Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Java GradleMavenDeployer-如何包含单独的模块代码_Java_Jar_Gradle - Fatal编程技术网

Java GradleMavenDeployer-如何包含单独的模块代码

Java GradleMavenDeployer-如何包含单独的模块代码,java,jar,gradle,Java,Jar,Gradle,我有一个这样的项目: <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

我有一个这样的项目:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.foo</groupId>
  <artifactId>bar</artifactId>
  <version>1.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>MyProject</groupId>
      <artifactId>ModuleB</artifactId>
      <version>unspecified</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>
MyProject
|-模块a
|-模B

模块A是一个创建aar的Android库,它依赖于模块B,如下所示:

 dependencies {
   compile project(':ModuleB')
在模块A中,我使用
mavenDepoyer
在本地发布:

uploadArchives {
    repositories.mavenDeployer {
        pom.groupId = "com.foo"
        pom.artifactId = "bar"
        pom.version = "1.0"
        repository(url: "file://${localReleaseDest}")
    }
}
这将生成一个
AAR
文件和一个
POM

解压缩时,
AAR
不包含模块B中的类文件 而
POM
如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.foo</groupId>
  <artifactId>bar</artifactId>
  <version>1.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>MyProject</groupId>
      <artifactId>ModuleB</artifactId>
      <version>unspecified</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>
我不希望它尝试将模块B解析为另一个依赖项,我希望使用mavenDeployer能够创建包含模块B的
AAR
&
POM
,因为我这里有实现这一点的源代码


在网上搜索无效,这些网站给出了提示,但没有回答:


据我所知,AAR不包含它们的依赖项(只有APK包含)。相反,可传递依赖项解析不仅要解析AAR,还要解析其依赖项。未指定的版本很可能是由于未在ModuleB中设置
project.version
属性造成的

<dependency>
  <groupId>MyProject</groupId>
  <artifactId>ModuleB</artifactId>
  <version>unspecified</version>
  <scope>compile</scope>
</dependency>
要解决此问题,您应该依赖maven dep
编译'com.xxxxxx.xxx:xxxxx:1.0.0-SHNAPSHOT'

因此,如果我将生成的aar和pom上载到maven central,我还必须单独上载
模块B
jar才能解析它?似乎我应该只使用一个模块来避免麻烦…是的,这就是通常的做法。也许有一种方法可以将ModuleB包括在AAR中,但我不知道这方面的任何细节,我认为这不是标准。(它当然不在Java land中。)除了发布到Maven Central,您还可以发布到您自己的存储库(一旦它包含在JCenter中,也会同步到Maven Central)。您确定要向“-SNAPSHOT”库添加依赖项吗?快照是开发版本,不是官方版本……我的意思是,它依赖代码,不是aar,忽略我写的快照。“我的意思是,它依赖代码,不是aar,忽略我写的快照。”-你能重新表述你的评论吗?我不明白你的意思。导致Maven POM文件出现未指定,原因是在gradle文件依赖项关闭未指定版本之前,我犯了一个错误:api项目(':xxxxxx'),因此Maven deployer Doseno无法准确生成POM文件,除非:api“组名称:模块名称:版本名称”
compile project(':module B')