卒業:同じプロジェクト上のJavaとAndroidサブプロジェクトの両方 -- java フィールド と android フィールド と intellij-idea フィールド と gradle フィールド 関連 問題

Gradle: Both Java and Android Subprojects on Same Project












5
vote

問題

日本語

tl; DR:純粋なJavaとAndroidアプリケーションの両方を開発する唯一の方法は、完全に異なる卒業プロジェクトにありますか?

AndroidアプリケーションとJavaバックエンド(他の一般的なAPIとともに)を含むプロジェクトを開発しています。
IDEとしてIntellijのアイデアを使用しています。
すべてのアプリケーションをサブプロジェクトとして含む単一の卒業プロジェクト(単一のアイデアインスタンスで開かれます)をお願いします。

問題は、Androidプラグインを許可するために、<コード> build.gradle file:

buildScript のセクションに設定する必要があることです。 <事前> <コード> dependencies { classpath 'com.android.tools.build:gradle:2.2.3' }

これはAndroidプラグインをGradleビルドプロセス全体に強制し、純粋なJavaサブプロジェクトのエラーを引き起こします(それらはJava SDKの代わりにAndroid SDKで自動的に構築されるように設定されます)。

回避策私は2つの別々のプロジェクトを作成している(Android用1つ、Java用1つ)、共通のjarをローカルのMavenリポジトリにエクスポートし、そこからAndroidプロジェクトにインポートします。

私がすべてのコードベースを同じ場所に持つことを可能にするより良い解決策はありますか?

英語

TL;DR: IS the only way to develop both pure Java and Android applications, is on completely different Gradle projects?

I am developing a project which includes an Android application and a Java backend (along with some other common APIs).
As an IDE I am using IntelliJ Idea.
I would like to have a single Gradle project (which will be opened on a single Idea instance), that contains all the applications as subprojects.

My problem is that in order to allow the Android plugin, I need to set it in the buildScript section in build.gradle file:

dependencies {     classpath 'com.android.tools.build:gradle:2.2.3' } 

This forces the android plugin in the entire Gradle build process, and causes errors on the pure Java subprojects (they are automatically set to be built with the Android SDK instead of the Java SDK).

A workaround I have thought of is creating two separate projects (one for Android and one for Java), export the common JARs into a local Maven repository and import it from there into the Android project.

Is there a better solution that will allow me to have all the code base in the same place?

</div
           
         
         

回答リスト

0
 
vote

各プロジェクトには独自のBuildScriptクラスパス

があります。

root / build.gradle

<事前> <コード> azure cli2
 

Each project has it's own buildscript classpath

root/build.gradle

project(':java-project') {     apply plugin: 'java' }  project(':andoid-project') {     buildscript {         dependencies {             classpath 'com.android.tools.build:gradle:2.2.3'         }     }     apply plugin: 'android' } 
</div
 
 
     
     
0
 
vote

Androidユーザーではなく、おそらく JavaCompile コンパイラが分岐され、別の<コード> 998877623

を使用するようにプロジェクトのみプロジェクトのみ <事前> <コード> azure cli4
 

I'm not an android user but perhaps you need to tweak the JavaCompile tasks on the java only projects such that the compiler is forked and uses a different javac

allprojects {     if (plugins.hasPlugin('java') && !plugins.hasPlugin('android')) {         tasks.withType(JavaCompile) {             options.fork = true             options.forkOptions.executable = '/path/to/javac'         }     } } 
</div
 
 
0
 
vote

あなたが求めているものが可能です:あなたはただプロジェクトからのBuildScript 宣言をAndroidモジュールに移動します。

プロジェクト<コード> build.gradle は次のようになります。

<事前> <コード> buildscript { // nothing for the project } allprojects { repositories { jcenter() // you could also move this to each module } } task clean(type: Delete) { delete rootProject.buildDir }

とAndroidモジュール<コード> build.gradle は次のようになります。

<事前> <コード> apply plugin: 'com.android.application' // other pluguins buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' // other dependencies for the build (apt, retrolambda...) } } android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "my.android.app" // additional config... } } dependencies { // your app dependencies here }

バックエンドやウェブなどの他のモジュールは、独自のプラグイン、リポジトリ、依存関係を持つ独自のビルドスクリプトを宣言することがあります。

 

What you are asking for is possible: you just need to move the buildscript declaration from the project to the android module.

The PROJECT build.gradle may look like this:

buildscript {     // nothing for the project }  allprojects {     repositories {         jcenter() // you could also move this to each module     } }  task clean(type: Delete) {     delete rootProject.buildDir } 

And the Android MODULE build.gradle may look like this:

apply plugin: 'com.android.application' // other pluguins  buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:2.3.1'         // other dependencies for the build (apt, retrolambda...)     } }  android {     compileSdkVersion 25     buildToolsVersion "25.0.2"     defaultConfig {         applicationId "my.android.app"         // additional config...     } }  dependencies {     // your app dependencies here } 

Other modules, such as backend or web, may declare their own buildscripts with their own pluguins, repositories and dependencies.

</div
 
 

関連する質問

0  Eclipse Gradle MC Modding Bug  ( Eclipse gradle mc modding bug ) 
だからこれは私が実行しようとしているたびに私が得るエラーです:CMDの中の "Gradlew Eclipse"または "Gradlew GeneClipseruns"。 <事前> <コード> Could not resolve: net.minecraftf...

7  卒業ランジャータスク?  ( Gradle runjar task ) 
gradleでjarファイルを実行するタスクを作成しようとしています。 私は次のことを思い付いた: <事前> <コード> task runJar(dependsOn:[jar]){ ant.java(jar:,fork:true) } しかし、私はj...

1  JavaFX Gradleビルドエラー、java.util.zip.zipException:重複エントリ:meta-inf / license  ( Javafx gradle build error java util zip zipexception duplicate entry meta inf ) 
gradleを使ってJavaFXアプリケーションを構築しています。 INTOに稼働し続ける問題は、Meta-Inf / Licenseの「重複エントリ」エラーです。 マイジャーにはAmazon AWS SDKへの依存関係が含まれているので、エラーがそれから生...

0  "Ionic Cordova Build Android"のエラー  ( Error on ionic cordova build android ) 
私はAndroid上のアプリを構築しようとしていますが、常にこのエラーを返します android_home = / usr / lib / android-sdk java_home = / usr / lib / jvm / jdk1.8.0_171...

12  未解決の参照:JUnit  ( Unresolved reference junit ) 
kotlinとlibgdxフレームワークを使ってゲームを書いています。テストが大変です。私は簡単なテストを作成する方法をいくつかの基本的なチュートリアルに渡しました。そして卒業の設定方法。クラスをクリックして[テストの作成]を選択しました。 しかし、プロジェ...

1  Gradle Javaコンソールアプリケーション  ( Gradle java console application ) 
JavaとGradleを使ったコンソールアプリケーションを書いています。私のJavaアプリケーションでは、ユーザーからの入力を受け入れようとしています。 Eclipse IDEで実行すると、問題なく機能しています。ただし、コマンドラインから実行しても、ユーザ...

8  AppEngineローカルサーバーをIDEA + GRAGELEからデバッグする方法  ( How to debug the appengine local server from ideagradle ) 
醜いアプリエンジンコースをフォローしていますが、Tinkerとして、卒業やアイデアを使って続きます(オープンソース版)。 次のbuild.gradleファイルを使用してプロジェクトを正常に設定しました <事前> <コード> buildscript { ...

4  Grails 2.0のGrails / Gradleプラグイン  ( Grails gradle plugin for grails 2 0 ) 
Grailsバージョン2.0でGrails-Gradleプラグインを使用しようとしています。これが私のビルドスクリプトです: <事前> <コード> buildscript { repositories { mavenRepo url:...

0  Cordaプロジェクトの設定:要求されたターゲットに有効な認証パスが見つかりません  ( Corda project setup unable to find valid certification path to requested target ) 
Intellij Idea Community 2019.1でCORDAプロジェクトを構成しながら、 trait Nat class _0 extends Nat class Succ[A <: Nat] extends Nat type _1 = Suc...

0  grayleでのタスクを実行する前にGITと負荷からプロパティファイルをダウンロードする  ( Download properties file from git and load before execution of any task in gradl ) 
3リポジトリに共通のtest.propertiesファイルを持つ。したがって、私はgitでコードをチェックします。 TESTA、TESTB、TESTCが3つのレポとしてTesta、TestB、TestCを持っているとしましょう。 今、Testaが最初にtes...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有