forked from qt-creator/qt-creator
QbsProjectManager: Provide classpath data to Java language server
Change-Id: Idf09ae566139a752184defe26fee082af8be31aa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -56,6 +56,7 @@ const char AndroidMkSpecAbis[] = "AndroidMkSpecAbis"; // QStringList
|
|||||||
const char AndroidSoLibPath[] = "AndroidSoLibPath"; // QStringList
|
const char AndroidSoLibPath[] = "AndroidSoLibPath"; // QStringList
|
||||||
const char AndroidTargets[] = "AndroidTargets"; // QStringList
|
const char AndroidTargets[] = "AndroidTargets"; // QStringList
|
||||||
const char AndroidApplicationArgs[] = "AndroidApplicationArgs"; // QString
|
const char AndroidApplicationArgs[] = "AndroidApplicationArgs"; // QString
|
||||||
|
const char AndroidClassPaths[] = "AndroidClassPath"; // QStringList
|
||||||
|
|
||||||
// For qbs support
|
// For qbs support
|
||||||
const char AndroidApk[] = "Android.APK"; // QStringList
|
const char AndroidApk[] = "Android.APK"; // QStringList
|
||||||
|
|||||||
@@ -291,16 +291,29 @@ void JLSClient::updateProjectFiles()
|
|||||||
return;
|
return;
|
||||||
const FilePath packageSourceDir = FilePath::fromVariant(
|
const FilePath packageSourceDir = FilePath::fromVariant(
|
||||||
node->data(Constants::AndroidPackageSourceDir));
|
node->data(Constants::AndroidPackageSourceDir));
|
||||||
FilePath sourceDir = packageSourceDir.pathAppended("src");
|
|
||||||
if (!sourceDir.exists())
|
FilePath sourceDir = packageSourceDir.pathAppended("src/main/java");
|
||||||
|
if (!sourceDir.exists()) {
|
||||||
|
sourceDir = packageSourceDir.pathAppended("src");
|
||||||
|
if (!sourceDir.exists()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sourceDir = sourceDir.relativeChildPath(projectDir);
|
sourceDir = sourceDir.relativeChildPath(projectDir);
|
||||||
|
|
||||||
|
const QStringList classPaths = node->data(Constants::AndroidClassPaths).toStringList();
|
||||||
|
|
||||||
const FilePath &sdkLocation = AndroidConfigurations::currentConfig().sdkLocation();
|
const FilePath &sdkLocation = AndroidConfigurations::currentConfig().sdkLocation();
|
||||||
const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget);
|
const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget);
|
||||||
const FilePath androidJar = sdkLocation / QString("platforms/%2/android.jar")
|
const FilePath androidJar = sdkLocation / QString("platforms/%2/android.jar")
|
||||||
.arg(targetSDK);
|
.arg(targetSDK);
|
||||||
FilePaths libs = {androidJar};
|
FilePaths libs = {androidJar};
|
||||||
libs << packageSourceDir.pathAppended("libs").dirEntries({{"*.jar"}, QDir::Files});
|
libs << packageSourceDir.pathAppended("libs").dirEntries({{"*.jar"}, QDir::Files});
|
||||||
|
|
||||||
|
for (const QString &path : classPaths)
|
||||||
|
libs << FilePath::fromString(path);
|
||||||
|
|
||||||
generateProjectFile(projectDir, qtSrc, project()->displayName());
|
generateProjectFile(projectDir, qtSrc, project()->displayName());
|
||||||
generateClassPathFile(projectDir, sourceDir, libs);
|
generateClassPathFile(projectDir, sourceDir, libs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -219,6 +219,22 @@ QVariant QbsProductNode::data(Id role) const
|
|||||||
qbsAbis << archToAbi[architecture];
|
qbsAbis << archToAbi[architecture];
|
||||||
return qbsAbis;
|
return qbsAbis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (role == Android::Constants::AndroidPackageSourceDir) {
|
||||||
|
return m_productData.value("properties").toObject()
|
||||||
|
.value("sourceDirectory").toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (role == Android::Constants::AndroidClassPaths) {
|
||||||
|
QStringList paths;
|
||||||
|
for (const auto &p : m_productData.value("module-properties").toObject()
|
||||||
|
.value(Constants::JAVA_ADDITIONAL_CLASSPATHS).toArray()) {
|
||||||
|
if (p.isString())
|
||||||
|
paths << p.toString();
|
||||||
|
}
|
||||||
|
return paths;
|
||||||
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ const char CPP_PLATFORMLINKERFLAGS[] = "cpp.platformLinkerFlags";
|
|||||||
const char CPP_VCVARSALLPATH[] = "cpp.vcvarsallPath";
|
const char CPP_VCVARSALLPATH[] = "cpp.vcvarsallPath";
|
||||||
const char XCODE_DEVELOPERPATH[] = "xcode.developerPath";
|
const char XCODE_DEVELOPERPATH[] = "xcode.developerPath";
|
||||||
const char XCODE_SDK[] = "xcode.sdk";
|
const char XCODE_SDK[] = "xcode.sdk";
|
||||||
|
const char JAVA_ADDITIONAL_CLASSPATHS[] = "java.additionalClassPaths";
|
||||||
|
|
||||||
// Settings page
|
// Settings page
|
||||||
const char QBS_SETTINGS_CATEGORY[] = "K.Qbs";
|
const char QBS_SETTINGS_CATEGORY[] = "K.Qbs";
|
||||||
|
|||||||
@@ -372,6 +372,7 @@ void QbsSession::insertRequestedModuleProperties(QJsonObject &request)
|
|||||||
"cpp.useObjcPrecompiledHeader",
|
"cpp.useObjcPrecompiledHeader",
|
||||||
"cpp.useObjcxxPrecompiledHeader",
|
"cpp.useObjcxxPrecompiledHeader",
|
||||||
"cpp.warningLevel",
|
"cpp.warningLevel",
|
||||||
|
"java.additionalClassPaths",
|
||||||
"qbs.architecture",
|
"qbs.architecture",
|
||||||
"qbs.architectures",
|
"qbs.architectures",
|
||||||
"qbs.sysroot",
|
"qbs.sysroot",
|
||||||
|
|||||||
Reference in New Issue
Block a user